Crontab未向正确的人发送php提醒电子邮件

Crontab未向正确的人发送php提醒电子邮件,php,email,cron,Php,Email,Cron,我尝试开发一个新功能,该系统可以在用户预订到期前一天向用户发送电子邮件。 我编写了一个php脚本,每天早上使用crontab触发php文件的执行。 现在的问题是,如果我编译php文件,一切正常,电子邮件会发送给用户。当我查看邮件日志时,它告诉我 to=<useremail@email.com>, ctladdr=<blablala> (0/0), delay=00:04:12, xdelay=00:04:12, mailer=esmtp, pri=120371, rela

我尝试开发一个新功能,该系统可以在用户预订到期前一天向用户发送电子邮件。 我编写了一个php脚本,每天早上使用crontab触发php文件的执行。 现在的问题是,如果我编译php文件,一切正常,电子邮件会发送给用户。当我查看邮件日志时,它告诉我

to=<useremail@email.com>, ctladdr=<blablala> (0/0), delay=00:04:12, xdelay=00:04:12, mailer=esmtp, pri=120371, relay=XXXXXXX., stat=Sent (r3HMoisd031604 Message accepted for delivery)

没有足够的信息来回答您的问题。php脚本从哪里获取电子邮件地址?它正常运行时是哪个用户,从cron运行时是哪个用户

/var/www/html/qars-vm90/demo.php
仅当脚本标记为可执行时才有效。此外,您还需要在文件的顶部添加一个shebang来告诉shell如何处理该文件(是否应该使用perl、php、python等执行该文件)

我怀疑发送的电子邮件是来自cron的错误消息,表示该文件不可执行。如果您以root用户身份登录,您应该能够阅读该消息

最简单的更改可能是将crontab更改为

30 7 * * * php /var/www/html/qars-vm90/demo.php

还值得记住的是,cron的环境通常与您在命令行(登录shell等)上获得的环境略有不同。

是的,这对我来说没有意义。验证您没有提供root@myserver.com作为他们的电子邮件地址?你不需要两个循环和一个标准的while(),这会更容易。哈哈,是的,我昨天也解决了这个问题,因为我错过了文件名前面的“php”命令。谢谢你的帮助。
30 7 * * * /var/www/html/qars-vm90/demo.php
/var/www/html/qars-vm90/demo.php
30 7 * * * php /var/www/html/qars-vm90/demo.php