在Openshift上的cron中执行php脚本

时间:2014-05-16 14:01:34

标签: cron openshift

我在PHP 5.4应用程序设置中添加了Cron 1.4。我需要能够执行一个脚本,最好是在我的网站上发送通知,但我无法让它工作。

该脚本位于:

/var/lib/openshift/OPENSHIFT_GEAR_UUID/app-root/runtime/repo/www/components/com_notifications/process.php

OPENSHIFT_GEAR_UUID用于替换实际值*

我在notifications文件夹中添加了一个名为.openshift/cron/minutely/的文件,并添加了以下内容:

#!/bin/bash
php -f ${OPENSHIFT_REPO_DIR}/www/components/com_notifications/process.php

我已经尝试了所有我能想到的或者想要让它发挥作用的东西。我试过删除大括号(我不确定是否需要它们)。我试过了#!/bin/sh。我已经对它们进行了修改以确保它们具有正确的可执行文件。

当我在浏览器中加载页面时,脚本可以正常工作。我跟着this tutorial,它实际上打印到日志文件,所以我知道cron正在工作。当我ssh进入并执行命令时,它可以工作。我似乎无法用cron做到这一点。

有任何建议或想法吗?任何帮助表示赞赏。谢谢!

更新

我已将文件更改为以下内容:

#!/bin/bash
php -f ${OPENSHIFT_REPO_DIR}/www/components/com_notifications/process.php >> ${OPENSHIT_DATA_DIR}/output.log 2>&1
date >> ${OPENSHIFT_DATA_DIR}/ticktock.log

ticktock.log每分钟都在更新,但出于某种原因,仍然没有调用php脚本。我已经尝试切换到wget,这远非理想的解决方案,并从域中调用它,但它仍然不起作用!

2 个答案:

答案 0 :(得分:1)

可能是你的php文件中的某些内容无法正常工作,请尝试使用>>将php文件的输出定向到数据目录中的文件。 $ {OPENSHIFT_DATA_DIR} /output.log并查看是否从cron运行它时遇到某种错误。也许某些环境变量或它需要的东西不存在。

答案 1 :(得分:1)

这似乎终于奏效了:

#!/bin/bash
php ${OPENSHIFT_REPO_DIR}www/components/com_notifications/process.php

由于环境变量都以尾随/结束,我从代码中删除它们以查看它是否能正常工作。我删除了notifications文件并创建了一个名为cron的新文件。我认为在测试不同代码时可能会出现一些奇怪的缓存。