我正在尝试通过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。
答案 0 :(得分:0)
尝试查看函数的返回码$return_var
(函数system
exec
的最后一个参数)。如果成功,它应该是0
。如果是127
,则可能在服务器上不允许命令行,或者您没有足够的权限从PHP脚本运行命令(它取决于执行脚本的用户/组)。否则函数只返回空数组的输出,就像没有好事或坏事一样。
我不久前遇到过类似情况,ls
工作正常,而wget
总是失败。
答案 1 :(得分:0)
您可能会收到权限被拒绝错误,尤其是因为您尝试将输出重定向到/dev/null
。可能想考虑一个cron工作,但我不确定你为什么要重定向输出并在后台运行它。