运行电子邮件列表脚本时来自Cron Daemon的额外电子邮件

时间:2011-08-05 06:02:47

标签: php email cron daemon

我有一个PHP脚本,可以向订阅者发送每两周一次的提醒。每次发送电子邮件时,它还会发送一封来自“Cron Daemon”的电子邮件。当我第一次编写脚本时,它没有发送这封电子邮件,但现在确实如此。我对此有几个问题。

这就是电子邮件所说的内容:

Set-Cookie: PHPSESSID=((random letters and numbers here)); path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/html
  1. 这封电子邮件是什么意思?
  2. 为什么要发送此电子邮件?
  3. 有没有办法停止发送此电子邮件?

2 个答案:

答案 0 :(得分:1)

Cron读取执行命令的stdout / stderr,如果写入内容,则cron发送电子邮件。

我猜php-executable被编译为“cgi”或“fcgi”,因此它默认会发出这些标题。

要解决这个问题,您显然有三种可能的解决方案:

  • 使用PHP的“cli”版本
  • 将stderr和stdout重定向到/ dev / null(这意味着将> /dev/null 2>&1附加到您的cron命令中。)
  • 定义MAILTO=""(请参阅this page)。

答案 1 :(得分:0)

我的猜测是你的PHP脚本正在向输出呈现内容。如果有任何内容被渲染,cron会将其转发给默认的管理员电子邮件。

有两个解决方案:

1)修复PHP脚本以完全不输出任何内容。这有时比看起来更难,特别是对于非平凡的脚本。

2)防止来自的cron脚本具有输出。这种方法的缺点是,当脚本失败时,您也不会收到通知。要停止输出,请使用以下内容:

#Before
* * * * * php /path/to/script
#After
* * * * * php /path/to/script > /dev/null 2>&1