#Что означает сообщение
Cron не работает
Укажите полный путь к php и скрипту, проверьте права и перенаправление вывода в лог.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Относительные пути | Отдельно проверьте фактор «Относительные пути» в момент, когда возникает описанная неисправность; сравните с работой исправного устройства или настройки. Отслеживайте результат по журналу нужной службы, не по соседним сайтам. | Если проверка подтверждает «Относительные пути», исправьте только относящийся к нему элемент, сохранив прежнее значение и возможность возврата. |
| Нет прав | Сравните права текущего пользователя и ограничения именно для нужной операции, файла или устройства; посмотрите сообщение об отказе. | Измените только необходимое разрешение, если это одобрено владельцем системы, вместо предоставления полных прав всем пользователям. |
| Другая версия PHP | Сверьте версию установленного компонента с требованиями программы и временем появления ошибки, особенно после последнего обновления. | Устанавливайте подтверждённо совместимое обновление из официального источника; перед заменой сохраняйте настройки и вариант возврата. |
| Нет логов | Сверьте существование точного пути и права на него; при диагностике сравните исходный объект с исправной тестовой копией. | Исправляйте указанный файл или параметр, сохраняя исходную версию; не удаляйте всю папку настроек ради единичной ошибки. |
#Пошаговое решение
- Проверьте исходные условияВ панели хостинга откройте «Задания Cron» и проверьте выражение расписания, часовой пояс сервера и пользователя, от которого запускается PHP. Создайте простое временное тестовое задание с записью времени в защищённый журнал, чтобы отличить неработающий планировщик от ошибки PHP-скрипта.
- Используйте полные путиВ поле команды укажите абсолютный путь к PHP CLI нужной версии и к скрипту, например
/opt/php85/bin/php /полный/путь/task.php, если эти пути подтверждены на сервере черезcommand -v/панель. Добавьте>> /безопасный/путь/cron.log 2>&1для вывода и ошибок, не помещая журнал в публичный каталог. - Проверьте другую возможную причинуЕсли задание запускается, но скрипт завершается, сравните
php -vпо реальному пути с веб-PHP сайта и проверьте права на чтение PHP-файла, запись в каталоги и переменные окружения. Задайте рабочий каталог явно в оболочке, если скрипт использует относительные пути, либо исправьте их на__DIR__. - Проверьте итогДождитесь одного расписанного запуска и проверьте время/содержимое журнала, а также результат задачи в приложении. Если cron вообще не запускает команду, обратитесь к журналу cron панели или службы; если PHP выдаёт Fatal error, устраняйте его, не меняя произвольно частоту запуска.
#На что обратить внимание
Не делайте скрипт общедоступным и не открывайте права 777. Если разные версии PHP установлены рядом, проверьте конкретный исполняемый файл командой php -v от имени нужного пользователя.