在Ubuntu上使用CRON运行PHP

请告诉我我做错了什么,为什么不运行:

3 * * * * /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 

logPHP.log被创build,但在运行时为空。 如果我用*replace3,脚本开始运行,但永远不会结束。

当我在terminal复制这个:

 /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 

一切运行顺利,因为它应该。

Ubuntu 10.04 LTS,

 PHP 5.3.2-1ubuntu4.9 with Suhosin-Patch (cli) 

如果使用 crontab -e创buildcron条目,则忽略缺less的用户部分。

检查cron条目的语法,你缺less“用户”,例如:

 3 * * * * some_user_here /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 

通过在执行此操作时validation没有错误,检查some_user_here是否向日志文件写入权限:

 su -m some_user_here cd /var/www/ touch logPHP.log 

通过确认/ usr / bin / php是否返回,检查php可执行文件是否存在于指定的位置:

 whereis php 

你是否在设置你的cron条目时使用了指南,例如https://help.ubuntu.com/community/CronHowto

您正在将标准输出(STDOUT)logging到日志文件,但您忽略了标准错误(STDERR)。 将STDERR发送到日志文件几乎总是一个好主意。 如果您忽略错误,您可能会错过关键问题。

修改你的cronjob把STDERRredirect到相同的日志文件,使用2>&1

 3 * * * * some_user_here /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 2>&1 

或者,也可以将错误发送到第二个日志文件:

 3 * * * * some_user_here /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 2> /var/www/logPHP.err 

然后,允许脚本再次运行,并检查/var/www/logPHP.log是否有错误。 在这一点上,你可能会自己解决这个问题。 如果您仍然需要帮助,可以使用错误日志的输出来更新您的答案。