簡體   English   中英

crontab無法正常運行php腳本

[英]crontab not running a php script properly

我正在嘗試運行基於SendGrid和cron的自動郵件服務。 我已經嘗試了所有可能的組合來使PHP解釋器運行我的腳本,盡管cron日志說該工作每分鍾執行一次,但是我定義的日志文件仍然為空,並且沒有收到電子郵件,但是當我通過瀏覽器訪問頁面時,一切正常。

mydev.com是我在計算機上使用的虛擬主機,並且我沒有對php配置進行任何更改(最大執行時間等)。

另外,我在網上進行了研究,並且安裝了php5-cli,並且所有需要的依賴項。

下面是我在終端中鍵入sudo crontab -e之后添加到cron文件中的行:

* * * * * php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null
* * * * * /usr/bin/php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null
* * * * * /usr/bin/php http://mydev.com/dev/mailServiceTest.php   >> /var/www/mydev/CRON_LOG.txt 2> /dev/null

* * * * * /usr/bin/lynx http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null

這是cron日志上的輸出:

Apr 15 15:13:01 oleg-Lenovo-G580 CRON[8948]: (root) CMD (/usr/bin/php http://mydev.com/dev/mailServiceTest.php   >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:13:01 oleg-Lenovo-G580 CRON[8947]: (root) CMD (php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:13:01 oleg-Lenovo-G580 CRON[8949]: (root) CMD (/usr/bin/php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:13:01 oleg-Lenovo-G580 CRON[8953]: (root) CMD (/usr/bin/lynx http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:14:01 oleg-Lenovo-G580 CRON[8964]: (root) CMD (/usr/bin/lynx http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:14:01 oleg-Lenovo-G580 CRON[8966]: (root) CMD (php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:14:01 oleg-Lenovo-G580 CRON[8965]: (root) CMD (/usr/bin/php http://mydev.com/dev/mailServiceTest.php   >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:14:01 oleg-Lenovo-G580 CRON[8970]: (root) CMD (/usr/bin/php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:15:01 oleg-Lenovo-G580 CRON[8992]: (root) CMD (/usr/bin/php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:15:01 oleg-Lenovo-G580 CRON[8994]: (root) CMD (php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:15:01 oleg-Lenovo-G580 CRON[8993]: (root) CMD (/usr/bin/php http://mydev.com/dev/mailServiceTest.php   >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:15:01 oleg-Lenovo-G580 CRON[8998]: (root) CMD (/usr/bin/lynx http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:16:01 oleg-Lenovo-G580 CRON[9009]: (root) CMD (/usr/bin/php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:16:01 oleg-Lenovo-G580 CRON[9011]: (root) CMD (php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:16:01 oleg-Lenovo-G580 CRON[9012]: (root) CMD (/usr/bin/lynx http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:16:01 oleg-Lenovo-G580 CRON[9010]: (root) CMD (/usr/bin/php http://mydev.com/dev/mailServiceTest.php   >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)

任何幫助深表感謝!。

O.

編輯:

下面是應該執行的代碼:

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/mailingService.php');

$myMail = new mailingService();
$myMail->execute();
$myMail->outputDuration();

?>

現在,即使我添加“ echo 1;” 在文件的開頭或結尾,沒有什么太大變化,並且輸出文件CRON_LOG.txt保持為空

$ _SERVER ['DOCUMENT_ROOT']-它是Web服務器的變量。 CRON在執行腳本時不使用apache。

          • php /var/www/mydev/dev/mailServiceTest.php

cron守護程序的路徑中是否包含“ php”?

          • / usr / bin / php /var/www/mydev/dev/mailServiceTest.php

更好(您是否驗證這是php的正確路徑?

通常這很有意義-但是,如果您需要以每分鍾一次的頻率運行任何命令,那么通過cron運行它並不是理想的解決方案。

我的腳本使用DOCUMENT_ROOT SERVER超級全局

但這對於CLI SAPI來說是沒有意義的/為null

不會做您期望的事情。

可以工作,但是lynx旨在作為用戶驅動的瀏覽器,甚至可能無法在這種情況下啟動-wget或curl會更好。

從cron日志crond確實在做應做的事情。

您扔掉STDERR意味着您看不到許多錯誤消息。 而且您也沒有寫任何對STDOUT有用的東西。 目標日志文件上的時間戳是否正在更新?

您安裝了crontab文件還是只是對其進行編輯?

如果您需要DOCUMENT_ROOT,則需要通過HTTP訪問腳本-檢查系統是否可以解析其自己的名稱並使用wget或curl(例如,從ssh會話嘗試wget http://mydev.com/dev/mailServiceTest.php ) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM