我以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配置可能出现问题。
有人有想法吗?
答案 0 :(得分:1)
php不在路径中。您需要指定php可执行文件的完整路径。您可以通过运行which php
这应该输出运行php cron.php
时调用的php二进制文件的完整路径,并且类似于/usr/bin/php
如果在crontab中用php
替换它,它应该运行正常。