Openshift cron 不运行 php 文件


Openshift cron doesn't run php file

我的应用程序中有 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),所以我收到了我的消息。怎么可能?魔法?

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

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

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

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

#!/usr/bin/env php

希望这有帮助。

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

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

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

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