Openshift cron не запускает php файл

0

У меня есть 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), чтобы получить мое сообщение. Как это возможно? Магия?

  • 0
    Вы уверены, что установили картридж cron?
  • 0
    Хорошо, ребята, спасибо за ваши ответы. Я добавил в конце book.php код, который пишет файл журнала, и он работает нормально. Но первая часть кода не работает. Эта часть должна написать текст на каком-то сайте. Если я запускаю его с браузером - пишет. Если он запускается с помощью cron - не пишет. Почему?
Теги:
cron
openshift

3 ответа

0

Я также использую openshift и выполняю php файл с помощью cron.

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

Это обычно выполняет скрипт с первого взгляда. Однако выпуск продукции не производился. Проблема заключалась в том, что все необходимые файлы php не могли быть загружены, потому что рабочий каталог не был таким же, как при загрузке веб-сервера. Установка рабочего каталога в самом скрипте php предотвратит эту ошибку и сделает скрипт отлично исполняемым cron.

Это должно помочь некоторым людям запустить их скрипт.

0

Для того, почему ваше задание 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

Надеюсь это поможет.

0

Вы пропустили часть #!/bin/bash? Это необходимо для запуска сценария оболочки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню