Openshift cron不会运行php文件

时间:2015-01-20 22:11:12

标签: php cron openshift

我的应用程序中有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

这个脚本也必须向我发送消息,但没有任何东西在干扰。但是,如果我只是通过我的webbrowser运行此脚本(转到http://xxx-xxxxxxx.rhcloud.com/book.php),那么我收到了我的消息。这怎么可能?魔法?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

为什么你的cron作业没有执行,请检查OpenShift上的cron日志。当你装入你的装备时,你可以在~/app-root/logs/cron_*.log找到它们。

确保您的cron作业可以使用chmod执行,并且有@bnaanaa所说的shebang行。同时检查您是否有.openshift/cron/minutely/jobs.{allow,deny}个文件,因为它们可能导致cron跳过您的工作。 (有关详细信息,请参阅cron README。)

在你的cron作业工作之后,你可以摆脱包装脚本runscript并让cron直接调用book.php。为此,请将book.php直接放入.openshift/cron/minutely,将其设为可执行文件,然后将其添加到其中:

#!/usr/bin/env php

希望这有帮助。

答案 2 :(得分:0)

我使用openshift并执行带有cron的php文件。

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

这通常会在第一时间执行脚本。但是没有产生输出。问题是,所有必需的php文件都无法加载,因为工作目录与Web服务器加载时的工作目录不同。在php脚本中设置工作directoy将防止此错误并使脚本完全可由cron执行。

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