Задание cron на хостинге не выполняется

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

Задание cron на хостинге не выполняется из-за неверного синтаксиса, пути к PHP, отсутствия прав, ограничения хостинга или ошибок в скрипте. Проверьте расписание, выполните команду вручную, перенаправьте вывод в лог и укажите полные пути.

В этой статье
  1. Почему cron не срабатывает
  2. Частые причины
  3. Порядок диагностики
  4. Особенности популярных CMS

#Почему cron не срабатывает

Cron запускает команду в минимальной среде: без привычных переменных окружения, с другим PATH, без рабочего каталога. Типичные причины: неверная запись расписания, относительные пути, не указан интерпретатор (php), скрипт не имеет права на выполнение, хостинг ограничивает частоту запуска (например, не чаще раза в 5–15 минут) или ошибка внутри самого скрипта. Если cron настроен через панель (ISPmanager, cPanel), проверьте, что задание активно.

#Частые причины

Возможная причинаКак узнатьЧто делать
Неверное расписаниеОпечатка в полях.Срабатывает не тогда.Проверьте на crontab.guru.
Относительные путиРабочий каталог другой.Ошибка 'file not found'.Используйте полные пути.
Не тот PHPВерсия отличается.Скрипт падает в cron.Укажите путь к нужной версии.
Нет правСкрипт не читается.Permission denied в логе.chmod/chown.
Ограничение хостингаМинимальный интервал.Не запускается чаще.Увеличьте интервал.
Ошибка внутри скриптаСкрипт падает.Лог содержит ошибку.Исправьте скрипт.

#Порядок диагностики

  1. Проверьте расписание на https://crontab.guru/Откройте панель хостинга → «Планировщик задач», «Cron» или «Задания по расписанию» и скопируйте сохранённое выражение. Проверьте его поля (минута, час, день месяца, месяц, день недели) в справочнике cron или на crontab.guru; некоторые панели используют отдельные поля. Сравните фактическое время сервера и расписание, не забывая о часовых поясах и переключениях времени.
  2. Запустите команду вручную из консоли и убедитесь, что она работаетЕсли есть SSH, подключитесь под тем же пользователем, который выполняет задание, и вручную запустите именно команду из расписания, сначала убедившись, что она не выполняет необратимую отправку писем или списания. Для опасных задач создайте тестовый режим либо пробную копию. Сравните выходной код echo $? и сообщения. Если вручную работает, а по расписанию нет, причина может быть в окружении и правах cron.
  3. Используйте полные пути к PHP и скриптуВ SSH выполните command -v php и php -v, но проверьте, что найденная версия подходит для вашего сайта. Для задания задайте абсолютный путь к бинарному PHP и скрипту, например /usr/bin/php -f /home/user/www/site/cron.php, заменив пути на реальные. В cron текущий каталог и переменная PATH могут отличаться от интерактивного терминала; используйте абсолютные пути и для файлов внутри скрипта.
  4. Перенаправьте вывод в лог, чтобы увидеть ошибкиВ редакторе конкретного задания добавьте перенаправление вывода в доступный пользователю журнал, например >> /home/user/cron.log 2>&1, после выполнения команды. Проверьте право записи в каталог и наличие свободного места. Не записывайте в журнал пароли и токены. Дождитесь планового запуска, откройте файл и найдите время, сообщение об ошибке и результат работы.
  5. Проверьте права на скриптЧерез SSH проверьте ls -l /фактический/путь/cron.php и права прохода по каталогам namei -l. Для запуска вида php -f script.php самому файлу достаточно чтения для пользователя cron, исполняемый бит не обязателен. Исправляйте разрешения только у подтверждённой цели; не устанавливайте 777 и не меняйте владельца всего сайта.
  6. Проверьте часовой пояс сервераНа Linux с systemd проверьте timedatectl status, на другом окружении — date. Сопоставьте время системы и часовой пояс cron, особенно если расписание на полночь. Для cPanel и других панелей уточните у хостера, в каком часовом поясе рассчитываются задания. При расхождении настройте расписание, а не меняйте часовой пояс общего сервера без согласования.
  7. Проверьте почту: cron отправляет ошибки на email пользователяЕсли вывода в собственный файл нет, проверьте почтовые уведомления cron для пользователя и раздел «История задач» в панели, если он предусмотрен. При правах администратора сервера можно изучить journalctl -u cron --since "1 hour ago" на Debian либо соответствующий журнал службы crond. Если запись о запуске есть, но результата нет, проверяйте команду и путь к PHP; если записи нет, расписание или служба не выполняются.
  8. Проверьте ограничения тарифаВ панели хостинга найдите ограничения тарифа: минимальный интервал cron, лимиты CPU, времени выполнения и число одновременных задач. Если задание слишком частое, увеличьте интервал или используйте поддерживаемую очередь. После изменения дождитесь двух плановых запусков и сравните время, файл журнала и ожидаемое обновление данных; при повторных отказах передайте хостеру команду без секретов и журнал.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Список заданий пользователя
    Linux · Терминал (Bash)Команда
    Список заданий пользователя
    crontab -l
    Вариант 2Путь к PHP и версия
    Linux · Терминал (Bash)Команда
    Путь к PHP и версия
    which php
    php -v
    Вариант 3Пример надёжного задания: каждые 5 минут, полные пути, вывод в лог (пути замените)
    Linux · Терминал (Bash)Команда
    Пример надёжного задания: каждые 5 минут, полные пути, вывод в лог (пути замените)
    */5 * * * * /usr/bin/php -f /home/user/www/site/cron.php >> /home/user/cron.log 2>&1
    Вариант 4Запустить команду вручную тем же способом
    Linux · Терминал (Bash)Команда
    Запустить команду вручную тем же способом
    /usr/bin/php -f /home/user/www/site/cron.php
    Вариант 5Лог выполнения cron в системном журнале (на VPS)
    Linux · Терминал (Bash)Команда
    Лог выполнения cron в системном журнале (на VPS)
    grep CRON /var/log/syslog | tail -20
    journalctl -u cron --since "1 hour ago" --no-pager
    Вариант 6Права на выполнение и часовой пояс
    Linux · Терминал (Bash)Команда
    Права на выполнение и часовой пояс
    ls -l /home/user/www/site/cron.php
    date

#Особенности популярных CMS

Для WordPress отключите псевдо-cron (define('DISABLE_WP_CRON', true); в wp-config.php) и запускайте wp-cron.php через системный cron: */5 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1. Для Bitrix используйте bitrix/modules/main/tools/cron_events.php и отключите агенты на хитах в /bitrix/php_interface/dbconn.php (define("BX_CRONTAB_SUPPORT", true);). Проверьте логи агентов в админке.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.