【发布时间】:2014-01-22 19:41:17
【问题描述】:
我无法从 php webscript 执行 unix at 作业命令。
at 工作的 php 看起来像这样:
$output=exec('echo "/usr/bin/perl /home/dir/test.pl" | /usr/bin/at now +1minute')
这将在 shell 命令提示符下正常工作。我可以执行 php 脚本,运行atq 以查看作业已设置并且该作业属于 root。然后等待并确认 test.pl 脚本已运行。 test.pl 脚本对数据库执行简单的更新,我可以检查以确认一切正常。
当我从网络执行 php 脚本时,回到我的 shell 并再次运行 atq。可以看到job已经被放置了,这次job属于apache,所以一切看起来都很好。但是在等待预定的时间后,test.pl 脚本没有执行,我可以在看到对 db 的更新没有工作后确认。
我相信这一定是权限问题,但我不确定。我尝试将 /home/dir 和 test.pl 脚本所有权授予 apache,但这仍然不起作用。我尝试在 webroot 文件夹中创建指向 /home/dir 的符号链接,但这似乎也没有帮助。我不太了解 apache 权限,所以我可能会忽略一些东西。
这里是目录和 test.pl ls -l 输出
/home/dir
drwxrwxr-x 2 apache apache
test.pl
-rwxr-xr-x 1 apache apache
感谢您对此的任何帮助。
【问题讨论】:
-
我可能理解有误,不过你可以试试把
test.pl的权限改成chmod 777。此外,Apache 通常没有所有权,管理员或用户有。