为什么php脚本在通过cron启动时不打印结果?

时间:2014-12-18 02:08:05

标签: php cron

的crontab:

* * * * * /usr/bin/php /path/to/script.php  > /tmp/log/cron-$(date "+%F_%T").log 2>&1

手动运行时,会生成预期的日志文件:

$ php /path/to/script.php > /tmp/log/cron-$(date "+%F_%T").log
...
$ ls /tmp/log/
cron-2014-12-17_20:04:17.log

但是当它从cron运行时,没有记录保存到日志文件的脚本运行。

我错过了什么?

更新

好吧,这似乎是一个许可问题。如果我创建一个日志文件和chmod 777,cron将写入此文件。但是cron不会写入新创建的日期文件。我怎么能允许这个?

# This works, but does not allow dynamic dates
* * * * * /usr/bin/php /path/to/script.php  > /tmp/log/cron.log 2>&1

# This does not work
* * * * * /usr/bin/php /path/to/script.php  > /tmp/log/cron-$(date "+%F_%T").log 2>&1

/tmp/logapache所有,但cron的启动时间为root

你推荐什么?

2 个答案:

答案 0 :(得分:0)

运行 $哪个php 找出你的PHP安装位置。然后检查root是否在路径中有它。

您可以使用自己的crontab安装它 $ crontab -e

这比以root身份运行要好得多,原因很多,其中最重要的是,如果你的脚本具有vulernability,它将比你的root用户拥有更少的访问权限。

答案 1 :(得分:0)

是&符号吗?您可以使用>将输出重定向到日志。运营商。我的猜测是&将进程发送到后台,然后没有任何内容用于>运算符重定向到您的日志。