我试图通过让PHP到餐桌的过程给exec PHP,同时在后台取得PHP给exec PHP
管道输出到/ dev/null,并且运行CMD在我得到这个静默运行 - 我想检查cmd运行如预期 - 但是,当命令执行PHP时,进程(master和fork)永不终止,并且浏览器被forver卡住在“Connecting ...”上
这里是代码:
$script = '/home/username/application/bg_job.php';
$args = 'foo bar';
$cmd = "php -f $script $args";
$return = exec($cmd, $arr_output, $code);
var_dump($return);
我检查了由doi运行脚本的Apache用户NG
whoami
,这是 “用户名” - 所以我以root身份登录并运行
sudo -u username php -f /home/username/application/bg_job.php foo bar
和它的作品。
任何想法,我可能做错了什么?
编辑 - 仅供参考 - 这里是bg_job.php
<?php
file_put_contents('/home/username/test.txt', 'Hello !');
?>
你想从浏览器(如在你的描述中)或从cli(如在你的标签)运行这个 – 2012-02-11 01:07:13
CLI代码只是为了表明脚本运行(没有语法或许可错误) - 它会调用子进程的浏览器 – cloakedninjas 2012-02-11 01:28:37
很可能你正在遇到权限错误。既然你实际上通过网页浏览器调用你的命令,例如RUN_USER = www-data和RUN_GROUP = www-data,你的后台脚本必须设置必要的位,以便你的web进程可以执行你的bg_job.php。另外,您希望bg_job.php写入的输出文件也必须设置正确的权限位。 – 2012-02-11 11:27:31