我有一个问题,让一个cron作业运行(正确)。
我创建了一个php页面(非常大,但缩减到没有),它调用mail()
<?
mail('my@email.com', 'subject', 'test');
mail('other@address.com', '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作业中运行相同的行,它就不起作用了。
我的下一站是检查日志。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
你可以看到它只尝试发送1封电子邮件,我假设失败,因为我从未收到过它。然而,它并没有告诉我失败的原因,我也没有任何其他线索。我还注意到,在cron作业中输出的字节比在命令行中输出的字节大。
最后,php文件对每个人都有完整的rwx权限。
问题是PHP作为apache模块运行,而不是PHP- cgi。我想作为一种变通方法,我可以使用像
这样的东西lynx -dump http://www.somedomain.com/cron.php
对于我的使用,我最终安装了php5-cli,然后简单地将cron作业更改为
php /path/to/file.php
固定。最好的和100%工作的解决方案是运行玉米作业与任何其他页面,并使用curl函数在该页面连接到您正在使用的电子邮件脚本的页面