我想用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>";
不幸的是,上面的代码不起作用。还有什么更好的建议吗?
答案 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
这不适用于''
一般来说,我认为尽可能使用''更安全。它不仅更安全,而且通常也更实用,因为你可以做到
$output = shell_exec('curl -XPOST -F ' . str_replace('a', 'b', $content) . ' http://135.195.42.168:6007');
你不必重新阅读你的代码,扫描所有字符串可能是一个隐藏的$