2014-05-16 152 views
1

我有一个PHP 5.4应用程序设置与Cron 1.4添加。我需要能够执行一个脚本,最好是每分钟发送一次通知,但我无法让这个工作。在cron上执行php脚本在Openshift

脚本位于:

/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做到这一点。

任何意见或建议?任何帮助表示赞赏。谢谢!!

UPDATE

我已经修改了文件到以下几点:

#!/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,这远非理想的解决方案,并从域名中调用它,但它仍然不起作用!

回答

1

这似乎终于已经奏效:

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

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

+0

有同样的问题,这工作。 – ccamacho

1

这可能是你的php文件中的某些东西无法正常工作,请尝试使用>> $ {OPENSHIFT_DATA_DIR} /output.log将php文件的输出引导到数据目录中的文件,然后查看是否获取从cron运行它的某种错误。也许有些环境变量或者它需要的东西不在那里。

+0

所以基本上'php -f $ {OPENSHIFT_REPO_DIR} /www/components/com_notifications/process.php >> $ {OPENSHIT_DATA_DIR}/output.log'? – NicholasJohn16

+0

是的,实际上可能需要更类似的东西来捕获错误:php -f $ {OPENSHIFT_REPO_DIR} /www/components/com_notifications/process.php >> $ {OPENSHIT_DATA_DIR} /output.log 2>&1 –

+0

应该输出。日志文件夹仍然被创建,并且即使没有错误也是空的,因为我没有得到任何东西? – NicholasJohn16