尽管有日志,Crontab仍然没有运行PHP脚本

时间:2015-03-27 21:56:57

标签: php linux amazon-web-services permissions cron

我以ec2-user身份登录我的AWS服务器,但我尝试以root身份运行所有内容,因此我使用sudo crontab -e命令管理我的crontab。这就是它的内容:

* * * * * php /var/www/html/a*****/cron/cron.php
* * * * * php /var/www/html/d*****/cron/cron.php
* * * * * /usr/bin/php -f /var/www/html/k*****/cron/cron.php
* * * * * php /var/www/html/l*****/cron/cron.php

/var/www/html/k*****/cron/cron.php脚本如下所示:

<?php
include_once('../functions.php');
date_default_timezone_set("UTC");


// ==============================================

$content = file_get_contents("output.txt");

file_put_contents("output.txt", date('j M Y \a\t g:ia').
                  "\n\n---------------------\n".$content);

// ==============================================

performScheduledJobs();

cron.php视图中的其他sudo crontab -e文件看起来都相同,只是// =====标记之间没有位。

由于这些脚本应该每分钟运行一次(根据sudo crontab -e设置,使用五个间隔星号* * * * *),我希望output.txt具有当前时间戳(在UTC)每分钟打印。相反,它只包含每次使用以下命令手动运行脚本时的(UTC)时间戳:

sudo php cron.php

该命令(当然在/var/www/html/k*****/cron/目录中)成功运行100%。

当然,我的直觉是甚至没有尝试运行cron.php文件,但是当我sudo vi /var/log/cron时,我看到以下内容:

Mar 27 21:51:01 ip-172-***-***-184 CROND[32032]: (root) CMD (php /var/www/html/a*****/cron/cron.php)
Mar 27 21:51:01 ip-172-***-***-184 CROND[32033]: (root) CMD (php /var/www/html/d*****/cron/cron.php)
Mar 27 21:51:01 ip-172-***-***-184 CROND[32035]: (root) CMD (/usr/bin/php -f /var/www/html/k*****/cron/cron.php)
Mar 27 21:51:01 ip-172-***-***-184 CROND[32034]: (root) CMD (php /var/www/html/l*****/cron/cron.php)

正如我所说的运行sudo php cron.php命令,所以我的crontab配置可能出现问题。

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

在crond中运行时,

php不在路径中。您需要指定php可执行文件的完整路径。您可以通过运行which php

找到这是什么

这应该输出运行php cron.php时调用的php二进制文件的完整路径,并且类似于/usr/bin/php如果在crontab中用php替换它,它应该运行正常。