我在按下网站上的按钮后执行的php脚本中具有以下命令:
exec('nohup php /var/www/website.org.uk/myScript.php >> /var/www/website.org.uk/shared/storage/logs/myLog.log 2>&1 & echo $! > /var/www/website.org.uk/pid.txt');
理想情况下,它应该在我的服务器上执行myScript.php
,将脚本的所有输出发送到myLog.log
,并将myScript.php
进程的pid存储到pid.txt
。
myScript.php:
<?php
print "\nStarting dummy script\n";
sleep(10); // Sleep for 10 seconds.
print "\nFinished dummy script\n";
如果我进入服务器并手动运行命令,则一切正常。但是,从网站运行时,会将pid写入pid.txt
文件,但是php脚本立即失败。什么都没写到日志中,使用ps
命令时,我看不到服务器上正在运行的进程(由于sleep命令,我应该看到它至少运行了10秒钟)。
在阅读了先前的堆栈溢出文章之后,我将所有三个文件的权限更改为-rwxr-x---
,并将该组更新为www-data
,但这没有任何区别。
我在这里还想念其他东西吗?