php邮件脚本不能与cron一起使用

php邮件脚本不能与cron一起使用,php,email,cron,ssmtp,Php,Email,Cron,Ssmtp,我在运行cron作业(正确)时遇到问题 我创建了一个调用mail()的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]:

我在运行cron作业(正确)时遇到问题

我创建了一个调用mail()的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 drew@drew-Virtual (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 drew@drew-Virtual (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 drew@drew-Virtual (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比命令行中的要大


最后,php文件对每个人都有完整的rwx权限。

问题在于php是作为apache模块而不是php-CGI运行的。我想作为一项工作,我可以用

lynx -dump http://www.somedomain.com/cron.php
对于我的使用,我最终安装了php5 cli,然后简单地将cron作业更改为

php /path/to/file.php

已修复。

您应该确保将
错误报告设置为-1,并检查
邮件()调用的返回值。
错误报告处于打开状态(开发计算机和所有),并且错误日志中没有(相关)错误。mail.log包含与syslog相同的信息,主要是1封电子邮件是从cron发送的,或2封是通过CLI发送的。尝试虚拟调试-在所有行之间放置虚拟回显以确保它们都已执行。添加一些行,如error_log(“Running cron.php”,3,“/var/tmp/errors.log”);将消息写入errors.log,但仅在从命令行运行时写入。从cron运行它不会显示这些行;回音邮件(…);回声“2”;回音邮件(…);回音“3”将输出有用的信息,如返回值以及实际执行的步骤。
lynx -dump http://www.somedomain.com/cron.php
php /path/to/file.php