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

Crontab not running PHP script, despite log

我以 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();

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 中 运行ning 时不在路径中。您需要指定 php 可执行文件的完整路径。你可以通过 运行ning which php

找到这是什么

这应该输出 php 二进制文件的完整路径,当你 运行 php cron.php 并且将类似于 /usr/bin/php 如果你替换 php在你的 crontab 中使用它应该 运行 没问题。