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