我在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
,这远非理想的解决方案,并从域中调用它,但它仍然不起作用!
答案 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
的新文件。我认为在测试不同代码时可能会出现一些奇怪的缓存。