2013-04-16 93 views
0

我有一個問題讓一個cron作業運行(正確)。PHP郵件腳本不能與cron一起工作

我創建了一個(非常大,但削減到什麼)PHP頁面調用郵件()

<? 
    mail('[email protected]', 'subject', 'test'); 
    mail('[email protected]', 'subject', 'test'); 
?> 

然後我創建了cron作業,運行該文件。的代碼中的crontab -e線如下:

12 0 * * * /opt/lampp/bin/php /opt/lampp/htdocs/atlantis/application/controllers/cron.php 

如果我運行從終端命令/ opt/LAMPP/bin中/ PHP的/opt/lampp/htdocs/atlantis/application/controllers/cron.php ,我收到一封郵件給我自己。但是,如果我從cron作業運行相同的行,它不起作用。

我的下一站是檢查日誌。我使用sSMTP運行Ubuntu。

Apr 16 11:49:17 drew-Virtual crontab[4722]: (drew) END EDIT (drew) //EDITED CRON 

//Calling cron.php file from terminal 
Apr 16 11:49:31 drew-Virtual sSMTP[4791]: Creating SSL connection to host 
Apr 16 11:49:32 drew-Virtual sSMTP[4791]: SSL connection using RSA_AES_128_CBC_SHA1 
Apr 16 11:49:34 drew-Virtual sSMTP[4791]: Sent mail for [email protected] (221 ip-173-201-180-143.ip.secureserver.net closing connection) uid=1000 username=drew outbytes=444 
Apr 16 11:49:34 drew-Virtual sSMTP[4794]: Creating SSL connection to host 
Apr 16 11:49:35 drew-Virtual sSMTP[4794]: SSL connection using RSA_AES_128_CBC_SHA1 
Apr 16 11:49:37 drew-Virtual sSMTP[4794]: Sent mail for [email protected] (221 ip-173-201-180-143.ip.secureserver.net closing connection) uid=1000 username=drew outbytes=454 
//I successfully received 2 emails, one to my work account, one to my personal account 

//Calling cron.php from cron 
Apr 16 11:50:01 drew-Virtual cron[857]: (drew) RELOAD (crontabs/drew) 
Apr 16 11:51:01 drew-Virtual CRON[4808]: (drew) CMD (/opt/lampp/bin/php /opt/lampp/htdocs/atlantis/application/controllers/chron.php) 
Apr 16 11:51:01 drew-Virtual sSMTP[4810]: Creating SSL connection to host 
Apr 16 11:51:02 drew-Virtual sSMTP[4810]: SSL connection using RSA_AES_128_CBC_SHA1 
Apr 16 11:51:04 drew-Virtual sSMTP[4810]: Sent mail for [email protected] (221 ip-173-201-180-143.ip.secureserver.net closing connection) uid=1000 username=drew outbytes=698 
//I did not receive any emails 

你可以看到它只是試圖發送一封電子郵件,我認爲,因爲我從來沒有接受失敗。但是,它並沒有告訴我爲什麼失敗,也沒有任何其他線索。我還注意到,cron作業中的outbytes大於命令行中的outbytes。

最後,php文件具有完整的rwx權限,適用於所有人。

+0

您應確保'error_reporting'設置爲-1,並檢查'​​mail()'調用的返回值。 –

+0

錯誤報告在(dev機器和所有)上,並且error_log中沒有(相關)錯誤。 mail.log包含與syslog相同的信息,主要是從cron發送1封電子郵件,或者通過CLI發送2封電子郵件。 – Drew

+0

嘗試僞調試 - 在所有行之間放置一個虛擬回顯以確保它們全部執行完畢。 –

回答

0

問題是,PHP作爲apache模塊運行,而不是PHP-CGI。我想作爲一個工作圍繞我可以用類似

lynx -dump http://www.somedomain.com/cron.php 

爲我用,我結束了安裝PHP5-CLI,然後簡單地改變cron作業

php /path/to/file.php 

固定它。