PHP - CLI vs cronjob - 相同的脚本,不同的结果

时间:2013-01-24 07:43:24

标签: php cron system exec command-line-interface

我有一个PHP脚本,如果我只是像php /path/to/script/script.php那样运行它,它在命令行上运行得非常好。 如果我现在使用crontab -e在cron中安排这个命令并添加行:

*/1 * * * * php /path/to/script/script.php 2>&1 >> /var/log/logfile.log

它会按预期每分钟执行一次,并且所有输出都会被放入日志文件中,就像在命令行上运行它一样。但是脚本的某些部分似乎不起作用。那些特定的部分是如下的行:

system('mkdir /mnt/temp', $retVal);

exec('mkdir /mnt/temp');

我尝试过使用/bin/mkdir代替mkdir等所有可能的操作,例如以root用户身份运行所有受影响的脚本和文件夹的权限。 system()的返回值为0表示在CLI上运行,1表示crontab方式。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我无法解决CLI vs crontab问题,但对我有用的解决方案是在cron中使用bash脚本。而该bash脚本又调用PHP脚本。这就像我需要运行脚本的任何用户下的魅力。 所以我不能说它是或者不是权限问题。

感谢所有评论家伙