0

我正在尝试通过 shell_exec(); 执行命令 但它什么也没做。我知道 shell_exec(); 已启用,因为这些工作完美:

echo shell_exec('which php');
echo shell_exec('ls');

他们确实输出正确。

问题是当我想执行这样的事情时:

shell_exec("php file.php var1 var2 > /dev/null &");

它什么也不做,但是当我通过计算机上的终端运行它时,它确实有效。我也试过用这样的完整路径来做:

shell_exec("/usr/bin/php /full/path/file.php var1 var2 > /dev/null &");

它不起作用,但再次......如果我通过终端计算机运行它,它就会起作用。

php.ini 安全模式已关闭,并且上面没有禁用的功能,所以我不知道会发生什么。是的,我可以访问 SSH 并获得一个专用 IP。

4

2 回答 2

0

尝试查看函数的返回码$return_var(函数的最后一个参数system exec)。0如果成功应该是这样。如果127可能是服务器上不允许使用命令行,或者您没有足够的权限从 PHP 脚本运行命令(这取决于执行脚本的用户/组)。否则函数只返回空的输出数组,就像没有发生好或坏的事情一样。

不久前我遇到了类似的情况,ls工作正常,但wget总是失败。

于 2012-07-24T19:46:29.597 回答
0

您可能会收到权限被拒绝错误,尤其是在您尝试将输出重定向到/dev/null. 可能想考虑一个 cron 作业,但我不确定您为什么要重定向输出并在后台运行它。

于 2012-07-24T19:54:16.287 回答