2013-04-16 2 views
0

У меня проблема с запуском задания cron (правильно).php mail скрипт не работает с cron

Я создал (очень большой, но свел на нет) PHP странице, которая вызывает почту()

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

Затем я создал свои хроны, который запускает файл. Строка кода в кронтаб -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, это не сработает.

Следующей остановкой было проверить журналы. Я запускаю Ubuntu с sSMTP.

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 

Вы можете видеть, что он пытается отправить только один адрес электронной почты, и я предполагаю, что это не так, как я его никогда не получаю. Однако, это не говорит мне, почему это провалилось, и у меня нет других подсказок. Я также заметил, что outbytes больше в задании cron, чем в командной строке.

Наконец, файл php имеет полные разрешения rwx для всех.

+0

Вы должны убедиться, что для параметра 'error_reporting' установлено значение -1, и проверьте возвращаемое значение вызова' mail() '. –

+0

Отчет об ошибках включен (dev machine и все), и ошибок error_log нет (соответствующих). mail.log содержит ту же информацию, что и syslog, в основном, что 1 электронное письмо было отправлено из cron или 2 отправлено через CLI. – Drew

+0

Попробуйте фиктивную отладку - поставьте фиктивный эхо между всеми строками, чтобы убедиться, что все они выполнены. –

ответ

0

Проблема заключалась в том, что PHP работал как модуль apache, а не PHP-CGI. Я полагаю, как обходные я мог бы использовать что-то вроде

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

Для моего использования, я в конечном итоге установка php5-CLI, а затем просто изменив хрон на

php /path/to/file.php 

зафиксировал его.

Смежные вопросы