Назад | Перейти на главную страницу

Запуск PHP с CRON в Ubuntu

Скажите, пожалуйста, что я делаю не так, почему не запускается:

 3 * * * * /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log

logPHP.log создается, но при запуске пусто. Если я заменю 3 на *, сценарий запускается, но никогда не заканчивается.

Когда я копирую это в Терминале:

/usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log

Все идет гладко, как и положено.

Ubuntu 10.04 LTS,

PHP 5.3.2-1ubuntu4.9 with Suhosin-Patch (cli)

Если вы используете crontab -e для создания записей cron игнорируйте отсутствующую пользовательскую часть.

Проверьте синтаксис записей cron, вам не хватает «пользователя», например :

3 * * * * some_user_here /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log

Убедитесь, что some_user_here имеет права на запись в файл журнала, убедившись, что при этом нет ошибок:

su -m some_user_here
cd /var/www/
touch logPHP.log

Убедитесь, что исполняемый файл php присутствует там, где вы указали, подтвердив, что / usr / bin / php возвращается, когда вы делаете это:

whereis php

Вы использовали руководство при настройке записи в cron, например https://help.ubuntu.com/community/CronHowto ?

Вы записываете стандартный вывод (STDOUT) в файл журнала, но игнорируете стандартную ошибку (STDERR). Почти всегда рекомендуется отправлять STDERR в файл журнала. Если вы проигнорируете ошибки, вы можете упустить важные проблемы.

Измените задание cron, чтобы перенаправить STDERR в тот же файл журнала, используя 2>&1:

3 * * * * some_user_here /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 2>&1

Или, в качестве альтернативы, отправьте ошибки во второй файл журнала:

3 * * * * some_user_here /usr/bin/php -q /var/www/CRON/hourly.php > /var/www/logPHP.log 2> /var/www/logPHP.err

Затем позвольте сценарию снова запуститься и проверьте /var/www/logPHP.log на наличие ошибок. В этот момент вы, вероятно, сможете решить проблему самостоятельно. Если вам все еще нужна помощь, вы можете обновить свой ответ здесь, добавив в журнал ошибок.