【问题标题】:Outputting PHP Cron Job to Log File instead of E-Mail将 PHP Cron 作业输出到日志文件而不是电子邮件
【发布时间】:2017-04-08 14:30:28
【问题描述】:

喜欢我可以通过电子邮件跟踪我的 PHP 脚本输出的事实,但我有一些运行速度快到每 15 分钟一次,所以这显然会导致电子邮件的过度涌入。我想把事情整理在一个日志文件夹中,包括我的 php 输出。

这是我的 cron 工作:

*/15 *  *  *  *  /usr/bin/php public_html/mysite/folder/script.php

我试过改成

*/15 *  *  *  *  /usr/bin/php public_html/mysite/folder/script.php >> /mysite/logs/folder/$(date +"\%Y-\%m-\%d_\%H:\%M").log 2>&1

但我仍然通过电子邮件收到带有错误的错误输出

/usr/local/cpanel/bin/jailshell: /mysite/logs/folder/2017-04-08_10:27.log: 没有这样的文件或目录

如何解决这个问题并将我的 PHP 输出保存到日志或 txt 文件中?

编辑:

为了将来参考,正确的语法是:

*/15  *  *  *  *  public_html/mysite/folder/script.php >> mysite/logs/folder/$(date +"\%Y-\%m-\%d_\%H:\%M").log 2>&1

【问题讨论】:

  • 确保目录/mysite/logs/folder/ 存在。最好的方法是在终端中运行命令,包括重定向和所有在将其放入 crontab 之前。

标签: php bash cron


【解决方案1】:

语法没问题,检查路径。您正在输入/mysite,但它真的在根目录上吗?当您引用脚本时,您输入了public_html/mysite。

确保日志文件的绝对路径是什么,然后更新您的 crontab。

【讨论】:

  • 太棒了。一个简单的修复,让我在各个不同的方向旋转。我只需要从mysite 中删除领先的/,它就可以正常工作了。
  • 请注意,cron 通常在用户的主目录中运行,尽管这可能取决于实现。在您的情况下,我假设 mysiteis 在用户的主目录中。我通常更喜欢使用绝对路径,以避免任何可能的混淆。检查 crontab 工作目录的一种简单方法是在 crontab 中创建一行,如下所示:* * * * * pwd > /tmp/pwd.txt。您将在不到一分钟的时间内在 pwd.txt 文件中获得答案。请记住从您的 crontab 中删除该行!
猜你喜欢
  • 2010-11-21
  • 1970-01-01
  • 2013-01-11
  • 2014-10-22
  • 1970-01-01
  • 2011-04-26
  • 2015-10-16
  • 2020-03-18
  • 2014-05-18
相关资源
最近更新 更多