【问题标题】:Cron job does not execute a php fileCron 作业不执行 php 文件
【发布时间】:2019-05-21 00:11:51
【问题描述】:

我因此设置了一个 cron 作业:

*/15 * * * * root /usr/bin/php5.6 /var/www/example.com/cr.php

(是的,root 现在是所有者 - 我稍后会解决)

我也尝试过在 .../php5.6 之后使用 -q

但它似乎没有工作,即使 syslog 显示它每 15 分钟执行一次 - 例如:

Dec 20 17:45:01 e2e-53-27 CRON[2601]: (root) CMD (root /usr/bin/php5.6 -q /var/www/example.com/cr.php)

如果我在 bash 提示符下执行用户名“root”之后的部分,它确实有效。

这是在 Debian 上运行的 apache2。我不知道这是否有任何区别,但 PHP 文件使用 curl 调用发送 SMS 的外部 API。

【问题讨论】:

  • 你能在命令行上运行它吗...这是第一步。
  • 是的,正如我所提到的,我在 bash 提示符(= 命令行)下尝试过,它可以工作。
  • 添加`> /var/www/example.com/cr.log 2> /var/www/example.com/cr.error.log`看看有没有错误。另外我建议先添加一些简单的文件:echo date('Y-m-d H:i:s')
  • 在相同条件下以同一用户身份运行脚本,可能设置或未设置影响行为的环境变量。
  • @Justinas 您的日志记录技巧有所帮助。显然它无法理解什么是“根”。错误日志说找不到根。我以为需要提供用户名?!

标签: php apache curl cron


【解决方案1】:

您应该在 cron 文件中使用此格式以使其工作:

*/15 * * * * /usr/bin/php5.6 /var/www/example.com/cr.php

最好的方法是把它放在脚本中,并作为脚本命令的第一行添加:

. /root/.bash_profile

在命令行中创建环境

【讨论】: