【问题标题】:Openshift cron doesn't run php fileOpenshift cron 不运行 php 文件
【发布时间】:2015-01-20 22:11:11
【问题描述】:

我的应用程序中有 2 个 .php 文件 - book.php 和 weather.php。我在 /.openshift/cron/minutely 中创建了一个名为“runscript”的文件。该文件内容:

#!/bin/bash

php -f $OPENSHIFT_REPO_DIR/weather.php

此脚本每分钟向我发送消息到手机,没关系。 然后我替换为:

php -f $OPENSHIFT_REPO_DIR/book.php

此脚本也必须向我发送消息,但没有发生任何事情。但是,如果我只是通过我的网络浏览器运行这个脚本(转到http://xxx-xxxxxxx.rhcloud.com/book.php),我就会收到我的消息。这怎么可能?魔法?

【问题讨论】:

  • 你确定你已经安装了 cron 墨盒吗?
  • 好的,谢谢您的回答。我在 book.php 的末尾添加了编写日志文件的代码,它工作正常。但是代码的第一部分不起作用。这部分必须在某个站点上写一些文本。如果我用浏览器运行它 - 它会写。如果它与 cron 一起运行 - 不写。为什么?

标签: php cron openshift


【解决方案1】:

你错过了#!/bin/bash 部分吗?这是运行 shell 脚本所必需的。

【讨论】:

    【解决方案2】:

    有关您的 cron 作业未执行的原因,请检查 OpenShift 上的 cron 日志。当您通过 SSH 连接到您的设备时,您可以在 ~/app-root/logs/cron_*.log 找到它们。

    确保您的 cron 作业可以使用 chmod 执行,并且具有 @gnaanaa 所说的 shebang 行。还要检查您是否有 .openshift/cron/minutely/jobs.{allow,deny} 文件之一,因为它们可能会导致 cron 跳过您的工作。 (有关更多信息,请参阅cron README。)

    在您的 cron 作业开始运行后,您可以摆脱包装脚本 runscript 并让 cron 直接调用 book.php。为此,请将book.php 直接放入.openshift/cron/minutely,使其可执行,并将此shebang 添加到其中:

    #!/usr/bin/env php
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我也使用 openshift 并使用 cron 执行了一个 php 文件。

      #!/bin/bash
      php ${OPENSHIFT_REPO_DIR}index.php
      

      乍一看,这会正常执行脚本。但是没有输出。问题是,所有必需的 php 文件都无法加载,因为工作目录与 web 服务器加载时的工作目录不同。在 php 脚本本身中设置工作目录将防止此错误,并使脚本可以由 cron 完美执行。

      这应该可以帮助一些人运行他们的脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 2014-06-22
        • 2012-06-19
        • 2014-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多