所以我想在我的网络服务器上从 PHP 执行一个 bash 命令。我可以使用shell_exec
. 但是,我要执行的命令之一是curl
. 我使用它将.wav
文件发送到另一台服务器并记录其响应。但是当从 PHP 调用时,curl
它不起作用。
我将错误减少到以下小示例。我有一个名为的脚本php_script.php
,其中包含:
<?php
$ver=shell_exec("curl -F file=@uploads/2013-7-24-17-31-43-29097-flash.wav http://otherserver");
echo $ver
奇怪的是,当我从命令行运行这个 php 脚本时php php_script.php
,我得到的结果是
Status: 500 Internal Server Error
Content-type: text/html
但是,如果我curl -F file=@uploads/2013-7-24-17-31-43-29097-flash.wav http://otherserver
直接运行,我会得到我期望的响应:
verdict = authentic
(编辑:)我可能应该提到,如果我将一些 bash 代码放在shell_exec
不包含的参数中curl
,则 bash 命令执行得很好。例如,将行更改为$ver = shell_exec("echo hello > world");
将单词“hello”放入文件“world”(前提是它存在并且可写)。(结束编辑。)
当从 PHP 调用 curl 时,有些东西阻止了 curl 的执行。我认为这可能是 PHP 在安全模式下运行,但我在 php.ini 中没有发现这一点。(有没有办法对此进行测试以确保 100% 确定?)是什么阻止了 curl,更重要的是,我如何绕过或禁用此阻止?
(是的,我意识到 PHP 有一个 curl 库。但是,出于调试目的,我更喜欢使用可以从命令行运行的命令。)
干杯,艾伦