如何在shell脚本中使用PHP变量?

时间:2018-04-05 16:11:10

标签: php shell curl

我想用PHP将文件发送到远程服务器。当我将文件名硬编码时,以下代码可以正常工作:

$output = shell_exec('curl -XPOST -F "file=@myfile.txt" http://135.195.42.168:6007');
echo "<pre>$output</pre>";

现在我需要动态决定“file=@myfile.txt”。我尝试了以下方法:

$filePath = $_SERVER['DOCUMENT_ROOT'].'package/myzip_'.$owner_id.'.zip';
$name = basename($filePath);
$content = "file=@{$name}";
$output = shell_exec('curl -XPOST -F $content http://135.195.42.168:6007');
echo "<pre>$output</pre>";

不幸的是,上面的代码不起作用。还有什么更好的建议吗?

1 个答案:

答案 0 :(得分:1)

$filePath = $_SERVER['DOCUMENT_ROOT'].'package/myzip_'.$owner_id.'.zip';
$name = basename($filePath);
$content = "file=@{$name}";
$output = shell_exec('curl -XPOST -F ' . $content . ' http://135.195.42.168:6007');
echo "<pre>$output</pre>";

应该可以正常工作

以及

$output = shell_exec("curl -XPOST -F $content 135.195.42.168:6007"); 

请注意:

php中的

'告诉php不解释'

之间的任何内容
$x = 'HELLO';


echo "what you say when you are nice? $x"; //outputs: what you say when you are nice? HELLO

这不适用于''

回声'\ n'; // outputs \ n

回声“\ n”; //输出换行符(不是换行符,而是回车符)

一般来说,我认为尽可能使用''更安全。它不仅更安全,而且通常也更实用,因为你可以做到

$output = shell_exec('curl -XPOST -F ' . str_replace('a', 'b', $content) . ' http://135.195.42.168:6007');

你不必重新阅读你的代码,扫描所有字符串可能是一个隐藏的$