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


Crontab not running PHP script, despite log

我以ec2用户的身份登录到我的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();

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

由于这些脚本应该每分钟运行一次(根据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配置出了问题。

有人有什么想法吗?

php在crond中运行时不在路径中。您需要指定php可执行文件的完整路径。你可以通过运行which php 找到这是什么

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