了shell_exec();在PHP中无法正常工作

时间:2012-07-24 18:37:05

标签: php shell command exec shell-exec

我正在尝试通过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。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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