我有2个PHP脚本需要每隔几分钟运行一次,php本身很好,因为我可以通过在浏览器中键入http://myfakesite.com/myphpfile.php
来手动触发它。两者都可以正常工作。
我对cron没有多少经验但是我找到了crontab文件(我在VPN上使用Parallels Power Panel),并且它已经有了每天,每周和每月运行部件cron.hourly的工作。我将我的电子邮件地址添加到MAILTO字段,并收到一条消息,告诉我cron.hourly不是目录 - 即使它是(尽管它当前是空的)。
我还将自己的2个作业添加到此文件中,如下所示:
*/1 * * * * wget http://myfakesite.com/script1.php
*/5 * * * * wget http://myfakesite.com/script2.php
这些都没有被调用过。在php脚本中,一旦调用脚本,我也有一行给我发电子邮件,因此我知道它正在工作,并且从未通过cronjob收到过电子邮件。如果我ssh到服务器并使用wget php工作并通过电子邮件发送给我确认。
我也试过
*/1 * * * * php http://myfakesite.com/script1.php
和
*/1 * * * * wget -O /dev/null http://myfakesite.com/script1.php>/dev/null 2>&1
没有运气。 crontab文件中的MAILTO从未向我发送消息,说运行脚本时出现问题,但很明显它没有这样做。
任何人都可以帮忙吗?我不知道下一步该尝试什么。
编辑:找到一些信息,说“不是目录”错误可以归结为损坏的crontab文件。所以我下载了它将信息复制到一个新文件并上传。 'not a directory'错误消失了......完全正确。即使我告诉它寻找一个我知道不存在的文件夹,如cron.myfakefolder,我也没有收到Not a directory: /etc/cron.myfakefolder
电子邮件。用原始文件替换了我的新crontab文件,我仍然没有收到来自cronjob的任何反馈。
编辑2:正如dAm2K和prodigitalson建议的那样,我尝试使用wget和php的绝对路径。两者都没有用,我已经仔细检查过usr / bin / wget和usr / bin / php的位置,以确保它们确实在那里。 我还检查了var / log / cron和var / log / messages,两者都包含:
2002无法执行“下载”操作:请求的文件“/ var / log / cron”将立即被发送。尝试以512KB的文件请求文件
不知道发生了什么。正如我在编辑1中提到的,即使我故意添加错误的位置,我也不再收到错误电子邮件。这与日志文件中的错误有关吗?
另外,我已经检查过crond正在运行,并且根据'System Services'和'System Processes'它正在运行。
答案 0 :(得分:1)
尝试使用cron的可执行文件的绝对路径:例如
*/5 * * * * /usr/bin/wget 'http://myfakesite.com/script1.php'
而不是
*/5 * * * * wget http://myfakesite.com/script1.php
仔细检查/ var / log / messages或/ var / log / syslog日志文件,了解有关cron执行的详细信息,以及系统通常会发生什么。
答案 1 :(得分:1)
如果您的脚本位于同一台服务器上,请尝试使用php -q
:
*/1 * * * * php -q pathToTheFile/script1.php