Скажите, пожалуйста, что я делаю не так, почему не запускается:
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 на наличие ошибок. В этот момент вы, вероятно, сможете решить проблему самостоятельно. Если вам все еще нужна помощь, вы можете обновить свой ответ здесь, добавив в журнал ошибок.