У меня есть 2 файла.php в моем приложении - book.php и weather.php. Я создаю файл с именем "runningcript" в /.openshift/cron/minutely. Это содержимое файла:
#!/bin/bash
php -f $OPENSHIFT_REPO_DIR/weather.php
Этот скрипт посылает мне сообщение на телефон каждую минуту, все в порядке. Затем я заменяю на:
php -f $OPENSHIFT_REPO_DIR/book.php
Этот скрипт ДОЛЖЕН отправить мне сообщение, но ничего не происходит. Но если я просто запустил этот скрипт с помощью своего веб-браузера (перейдите на http://xxx-xxxxxxx.rhcloud.com/book.php), чтобы получить мое сообщение. Как это возможно? Магия?
Я также использую openshift и выполняю php файл с помощью cron.
#!/bin/bash
php ${OPENSHIFT_REPO_DIR}index.php
Это обычно выполняет скрипт с первого взгляда. Однако выпуск продукции не производился. Проблема заключалась в том, что все необходимые файлы php не могли быть загружены, потому что рабочий каталог не был таким же, как при загрузке веб-сервера. Установка рабочего каталога в самом скрипте php предотвратит эту ошибку и сделает скрипт отлично исполняемым cron.
Это должно помочь некоторым людям запустить их скрипт.
Для того, почему ваше задание cron не выполняется, проверьте журналы cron на OpenShift. Вы можете найти их в ~/app-root/logs/cron_*.log
когда вы используете SSH.
Убедитесь, что ваше задание cron выполнено с помощью chmod
и имеет строку shebang, как говорит @gnaanaa. Также проверьте, есть ли у вас один из .openshift/cron/minutely/jobs.{allow,deny}
поскольку они могут заставить cron пропускать вашу работу. (Дополнительную информацию см. В cron README.)
И после того, как ваше задание cron работает, вы можете избавиться от скрипта сценария runscript
и получить cron call book.php
напрямую. Для этого поместите book.php
непосредственно в .openshift/cron/minutely
, сделайте его исполняемым и добавьте в него эту привязку:
#!/usr/bin/env php
Надеюсь это поможет.
Вы пропустили часть #!/bin/bash
? Это необходимо для запуска сценария оболочки.