[英]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
命令是sudo php cron.php
,所以crontab配置可能出了什么問題。
任何人都有想法嗎?
在crond中運行時,php不在路徑中。 您需要指定php可執行文件的完整路徑。 您可以通過運行which php
來查找這是什么
這應該輸出的完整路徑,當您運行名為php的二進制php cron.php
,將是這樣/usr/bin/php
如果更換php
在crontab本應該運行正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.