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 中使用它应该 运行 没问题。
我以 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 中使用它应该 运行 没问题。