2013-01-24 44 views
1

我有一个PHP脚本,在命令行上运行得非常好,如果我只是像这样运行php /path/to/script/script.php。 如果我现在使用crontab -e安排在cron这很命令和添加一行:PHP - CLI与cronjob - 相同的脚本,不同的结果

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

它得到执行每分钟预期和所有的输出被放到日志文件中,就像在命令运行它线。但是脚本的某些部分看起来并不起作用。这些特定的部件是像行:

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

exec('mkdir /mnt/temp'); 

我试图像运行它作为root一切可能的事情,使用/bin/mkdir上的所有脚本和文件夹会受到影响,权限,而不是的mkdir。系统()的返回值在CLI上运行时为0,在crontab中为1。

有什么建议吗?

+0

如果它是一个临时文件夹,为什么不在里面创建它/ tmp? – WebChemist

+0

a)确定调用了相同的php解释器? PATH变量可能不同。和b)这可能是一个权限问题:确保脚本在相同的用户帐户下执行?使用相同的权限和umasks? – arkascha

+1

权限最有可能!你作为命令行的用户运行cron? –

回答

2

我无法解决CLI与crontab的问题,但解决方案适用于我的是在cron中使用bash脚本。而这个bash脚本依次调用PHP脚本。这在我需要运行脚本的任何用户下面都很有用。 所以我不能说它是或不是权限问题。

感谢您的所有意见球员