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權限,適用於所有人。
您應確保'error_reporting'設置爲-1,並檢查'mail()'調用的返回值。 –
錯誤報告在(dev機器和所有)上,並且error_log中沒有(相關)錯誤。 mail.log包含與syslog相同的信息,主要是從cron發送1封電子郵件,或者通過CLI發送2封電子郵件。 – Drew
嘗試僞調試 - 在所有行之間放置一個虛擬回顯以確保它們全部執行完畢。 –