作为php-slim Web应用程序的一部分,在我的init.php文件中,我需要一个包含以下代码的Crontab.php:
<?php
// clears any existing crontab jobs first
exec("crontab -r");
$ctCommand = '"*/1 * * * * php ./ProcessCycleTimeData.php"';
exec("(crontab -l 2>/dev/null; echo " . $ctCommand . " ) | crontab -");
exec("crontab -l");
?>
当我手动运行命令时,作业会被添加,我可以看到它被记录,但它似乎没有运行。但是,当我运行php ./ProcessCycleTimeData.php
时,它运行正常。有什么想法解决这个问题吗?
我正在查看错误日志,每分钟都会收到以下日志:
crontab: no crontab for daemon
答案 0 :(得分:2)
您可以使用crontab -e
编辑crontab,这将打开默认编辑器(如果未设置其他编辑器,则通常为vi
。)
为需要运行此脚本的用户编辑crontab,并添加一行:
*/1 * * * * php ./ProcessCycleTimeData.php
这意味着
每一分钟
答案 1 :(得分:2)
我设法让它发挥作用。我的解决方案是通过附加>>/tmp/auto-update.log 2>&1
的crontab作业来检查crontab是否实际运行,这使我能够进一步调查此问题。
我发现crontab确实在运行,但作为一个不同的用户(因此当我手动调用crontab -e
时,我无法看到该作业,因为我将其称为我自己的用户名。
crontab实际上也在调用我的PHP脚本,然后我可以找到auto-update.log
中的错误,这些错误恰好是由于错误地说明了需求路径。