我想让一个PHP程序调用一个python程序,并让它在后台运行。当我从shellnohup python3 automation.py args >/dev/null 2>&1 &
调用此函数时,一切都运行良好。我运行了top
和jobs
,可以看到它正在执行。脚本成功完成。
现在我希望这个脚本从PHP程序中调用,然后在后台运行,所以我使用这个命令,与上面的命令相同。为了使程序不挂起,我将其输出为null。exec('nohup python3 automation.py args >/dev/null 2>&1 &')
当我服用top
时,一切都会正常运行一段时间,但几秒钟后它就死了,我只能挠头想为什么。如何对此进行故障排除?
问题已解决。执行命令时使用PHP的linux用户是www-data
。该用户没有该文件的写入权限。要以www数据的身份登录进行测试,请运行此su -s /bin/bash www-data
。在shell中执行的任何命令都应该等效于从PHP调用它。