我最近遇到过crontab的一些问题。切换服务器后,我意识到我的cronjobs都没有运行。看完PHP信息后,我意识到php是用CGI运行的,所以我意识到我必须将lynx -dump URL_HERE
切换到php -q PATH_HERE
。
在实际的PHP文件中,我像#!/usr/bin/php -q
一样盯着它来定义php在我的服务器上的位置。但是,它没有运行。我甚至设置了crontab,以便在运行任何内容后向我发送电子邮件。没有电子邮件我检查了垃圾,垃圾,垃圾邮件,我甚至尝试过切换电子邮件。什么都没有。
以下是我现在所拥有的:* * * * * php -q /home/USER/public_html/file.php
。
如果我复制&将它粘贴到命令行中,它运行得非常好。如果我通过crontab运行它,它就不会运行。
答案 0 :(得分:0)
你可以做一些事情来调试它。
1)在您的crontab中,将您的条目更改为:
* * * * * php -q /home/USER/public_html/file.php > /tmp/filecron 2>&1
确保键入以下内容编辑条目:
crontab -e
然后运行:
tail -f /tmp/filecron
在输出运行时调试输出。
2)作为sudo用户或root用户,请关闭cron日志以确保你的cron正确执行:
sudo tail -f /var/log/cron
第一步将为您提供与php文件本身相关的信息(语法错误等),如果这是失败的话。如果没有正确配置crontab本身,第二步将帮助您。
你打算每5分钟运行一次这项工作吗?这就是你所说的那条线。
答案 1 :(得分:0)
您缺少环境变量。尝试像这样的简单测试
将此添加到您的crontab
* * * * * set > /tmp/vars
等待2到3分钟,返回并删除刚刚创建的crontab条目。
接下来,
在shell命令行中,您通常使用
set > myvars
diff myvars /tmp/vars
这将向您展示环境的不同之处。修改您的cron作业环境。只需添加所需内容即可。