Crontab неправильно запускает PHP-скрипты

У меня есть следующие команды, установленные в моем crontab

0 * * * * root cd /home/domain/public_html/webcrawler && php cron1.php
40 * * * * root cd /home/domain/public_html/webcrawler && php cron2.php

Дело в том, что они не работают. Есть ли какие-либо заметные ошибки в установленных мной командах? Скрипты php работают нормально при запуске из ssh или загружены в браузер. Я пытался с и без рута в начале.

2 ответа

Решение

Вы должны вызывать задания PHP cron с полным путем (обратите внимание, ваш PHP может находиться в другом месте)

0 * * * * /usr/bin/php /path/to/your/script.php

Измените && с ; читать как

0 * * * * root cd /home/domain/public_html/webcrawler; php cron1.php

или выполнить его по абсолютному пути

0 * * * * root php /home/domain/public_html/webcrawler/cron1.php

При использовании абсолютного пути вы можете форсировать текущий рабочий каталог скрипта cron, выполнив

chdir(__DIR__); //or chdir(dirname(__FILE__));

Вы также можете добавить PHP-шебанг в начало файла cron.php (ваш php-файл может иметь другой путь)

#!/usr/bin/php

http://php.net/manual/en/features.commandline.usage.php

Затем вы можете выполнить скрипт, не обращаясь к бинарному файлу php, используя

0 * * * * root /home/domain/public_html/webcrawler/cron1.php
Другие вопросы по тегам