我有 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 文件。所以我下载了它,将信息复制到一个新文件并上传。“不是目录”错误消失了......完全。即使我告诉它查找我知道不存在的文件夹,例如 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 是否正在运行,并且根据“系统服务”和“系统进程”它正在运行。