【问题标题】:Getting cron job error because of <?php tag由于 <?php 标记而出现 cron 作业错误
【发布时间】:2011-12-24 21:12:57
【问题描述】:

我已经设置了一个 cron 作业来运行。它执行一个名为 cronj.php 的 php 文件 但它不起作用,我收到的 cron 作业通知是:

/root/website/myworld/blabla/cronj.php: line 1: ?php: No such file or directory

该文件中的第 1 行只是一个 php 标记 &lt;?php 我不知道如何

【问题讨论】:

标签: php cron-task


【解决方案1】:

Cron 正在执行文件,就像它是一个 shell 脚本一样。通常你会在文件的顶部放一个 shebang 行(比如#!/usr/bin/env php),这样 shell 就知道如何调用它,但是 PHP 不喜欢它——因为它输出了它的标签之外的所有东西。因此,而不是这样:

0     3     *     *     *         /mypath/myscript.php ...

试试这个:

0     3     *     *     *         /usr/bin/env php /mypath/myscript.php ...

或使用@Ravenex 的把戏。

编辑 我被正确地警告假设 PHP 以一致的方式运行。显然,shebang 确实在 PHP 中工作。我向@chess007 道歉。

【讨论】:

  • 嗯,确实,你是对的。我使用标准输入测试 CLI,并愚蠢地认为它的行为与使用文件名参数相同。
  • 所以没有我的路径看起来像这样?:/usr/bin/env php /root/website/myworld/blabla/cronj.php
  • 看起来是正确的。或者,正如我被告知的那样,您可以保持 cron 条目不变,并将 #!/usr/bin/env php 作为 PHP 脚本的第一行。
  • 好的,我现在将测试这两种解决方案。
【解决方案2】:

我们使用 cron 在 php facebook 游戏中运行夜间任务。我们通过像这样使用 curl 来做到这一点:

/usr/bin/curl http://www.ourdomain.com/page.php

如果我没记错的话,我们在使用 localhost 来避免外部查找时遇到了一些问题。我们还尝试了使用 php 命令行执行,这主要是可行的,但会导致一些奇怪的错误。

【讨论】:

  • 我们还发现这样可以更轻松地进行调试,因为它将脚本放置在可以从浏览器进行测试的地方,并且可以以可读的方式输出调试信息。尽管使用此解决方案时要小心考虑安全性,以免外部用户偶然发现并运行脚本。
【解决方案3】:

尝试调用网址(http://.....)。

它显然没有将其解析为 PHP 脚本。

编辑: 请显示使用您使用的 cronjob,以验证我的预感是正确的。

【讨论】:

    【解决方案4】:

    使用它来设置您的 cron 并在您的 cron 设置 Cpanel 中提供电子邮件地址,以便您在 cron 成功运行时收到一封电子邮件

    wget -O - http://YOURSITE/cron.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 2019-12-31
      • 2016-06-04
      • 2017-10-11
      相关资源
      最近更新 更多