存储 crontab 发出的 PHP 输出

存储 crontab 发出的 PHP 输出

我有一个 PHP 文件,该文件应该由 crontab 安排每天发送一封电子邮件。这是我的 crontab:

45 23 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php

我注意到它不起作用,也就是说,电子邮件没有被发送。所以我尝试了以下方法:

00 11 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php 
            >> /var/log/crontab.linus.log 2>&1

注意:这里的时间安排并不重要,我为了测试目的不断改变它

那没有用。该文件crontab.linus.log未创建。

在检查/var/log/cron文件时,我注意到我的 cron 被执行了

Feb 25 11:22:01 shoutcast01 CROND[3395]: (apache) CMD (php 
    /var/www/html/linus/class/runnable/dailyStaffReport.php 
    >> /var/log/crontab.linus.log 2>&1)

最后,如果我手动执行,php /var/www/html/linus/class/runnable/dailyStaffReport.php我会立即在收件箱中收到电子邮件。我什至echoes在 PHP 脚本中编写了一些脚本,希望尝试看看脚本是否在某个地方失败了。

[root@shoutcast01 ~]# php /var/www/html/linus/class/runnable/dailyStaffReport.php
  LOADING STAFF USERS...
  COMPUTING STAFF WORK TIME...
  BUILDING CHART...
  SAVING CHART...
  WRITING DOWN THE CHART...
  SENDING THE EMAIL...
  1
  DONE.

类似地,我还有另一个文件,计划每 2 分钟发送一次电子邮件,并且运行良好。

[root@shoutcast01 ~]# crontab -u apache -l
22 11 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php 
      >> /var/log/crontab.linus.log 2>&1
*/2 * * * * php /var/www/html/linus/class/runnable/dispatchEmail.php 

总结

  • 如果我在终端中手动执行脚本,电子邮件就会被送达。
  • 电子邮件未送达,但 cron 日志告诉我脚本已执行。
  • 我无法记录任何内容>> /var/log/crontab.linus.log 2>&1

关于我可以做什么来尝试解决这个问题有什么建议吗?

答案1

调试不起作用的问题是我试图将调试信息存储到其中/var/log/crontab.linus.log,但该文件不存在,并且用户apache无权创建它。

意识到这一点后,我自己创建了该文件

touch crontab.linus.log
chown apache crontab.linus.log
chgrp apache crontab.linus.log
chmod 0777 crontab.linus.log

然后我又重新调度了任务,等待执行。事实证明,最初的问题也与许可有关。

PHP 致命错误:未捕获异常“ImagickException”,消息“无法写入文件 [...]

所以我chmod 0777在 PHP 脚本保存图像的文件夹中设置。之后,apache 用户正在执行的计划已成功执行,并且电子邮件已发送。

相关内容