Как проверить, работает ли задача CRON на сервере
CRON используется для автоматического запуска скриптов по расписанию: отправки уведомлений, импорта данных, очистки временных файлов, выполнения агентов и других фоновых задач.
Но иногда возникает ситуация: задача настроена, время указано правильно, а нужный скрипт всё равно не выполняется.
Например:
Пример команды:
* * * * * — запуск каждую минуту;
/usr/bin/php — путь к PHP CLI на сервере;
/home/user/www/site.ru/cron-test.php — полный путь к тестовому скрипту.
Пути на разных серверах отличаются, поэтому не стоит просто копировать команду из примера.
Если не знаете путь к PHP или полный путь к сайту — их лучше уточнить в панели управления сервером или у технической поддержки хостинга.
Если файл не появился или остаётся пустым — проблема находится на уровне системного планировщика, команды запуска или путей к PHP и скрипту.
Например:
Если при ручном запуске скрипт работает, а через CRON — нет, значит проблема скорее всего именно в настройке планировщика.
Если скрипт не работает и при ручном запуске, CRON здесь ни при чём — сначала необходимо исправить ошибку в самом скрипте или команде запуска.
Например:
Запуск каждую минуту:
После того как задача заработает, ненужный вывод можно отключить:
В этом случае служебный скрипт не приходится делать доступным из интернета, а его выполнение меньше зависит от настроек веб-сервера.
Файлы:
Кратко: как проверить CRON
1. Создаём простой PHP-скрипт, который пишет дату запуска в лог.
2. Добавляем его в CRON с запуском каждую минуту.
3. Ждём несколько минут.
4. Проверяем содержимое лог-файла.
5. Если записи появляются — CRON работает.
6. Если записей нет — проверяем путь к PHP, путь к скрипту и журнал ошибок.
Такой тест позволяет быстро понять, на каком уровне находится проблема: в самом CRON, в PHP или уже в рабочем скрипте.
Вернуться к блогу
Но иногда возникает ситуация: задача настроена, время указано правильно, а нужный скрипт всё равно не выполняется.
Как понять, работает ли сам CRON на сервере?
Самый простой способ — создать отдельный тестовый PHP-скрипт, который при каждом запуске будет добавлять текущую дату и время в лог-файл.1. Создаём тестовый PHP-файл
Например, создадим в корне сайта файл:
cron-test.php
И добавим в него следующий код:
<?php
$logFile = __DIR__ . '/cron-test.log';
file_put_contents(
$logFile,
'CRON запущен: ' . date('Y-m-d H:i:s') . PHP_EOL,
FILE_APPEND | LOCK_EX
);
При каждом запуске скрипта в файл cron-test.log будет добавляться новая строка с текущей датой и временем.Например:
CRON запущен: 2026-09-25 14:01:00
CRON запущен: 2026-09-25 14:02:00
CRON запущен: 2026-09-25 14:03:00
Если файл создаётся и новые строки в нём появляются по расписанию — значит системный планировщик работает.
2. Настраиваем задачу CRON
Для проверки удобно временно запускать скрипт каждую минуту.Пример команды:
* * * * * /usr/bin/php /home/user/www/site.ru/cron-test.php
Здесь:* * * * * — запуск каждую минуту;
/usr/bin/php — путь к PHP CLI на сервере;
/home/user/www/site.ru/cron-test.php — полный путь к тестовому скрипту.
Пути на разных серверах отличаются, поэтому не стоит просто копировать команду из примера.
Если не знаете путь к PHP или полный путь к сайту — их лучше уточнить в панели управления сервером или у технической поддержки хостинга.
3. Проверяем результат
После добавления задачи подождите несколько минут и откройте файл:
cron-test.log
Если внутри появляются новые строки примерно раз в минуту:
CRON запущен: 2026-09-25 14:01:00
CRON запущен: 2026-09-25 14:02:00
CRON запущен: 2026-09-25 14:03:00
значит CRON работает корректно.Если файл не появился или остаётся пустым — проблема находится на уровне системного планировщика, команды запуска или путей к PHP и скрипту.
4. Проверяем PHP-скрипт вручную
Перед настройкой CRON полезно проверить сам PHP-файл из командной строки.Например:
/usr/bin/php /home/user/www/site.ru/cron-test.php
После выполнения команды в файле cron-test.log должна появиться новая запись.Если при ручном запуске скрипт работает, а через CRON — нет, значит проблема скорее всего именно в настройке планировщика.
Если скрипт не работает и при ручном запуске, CRON здесь ни при чём — сначала необходимо исправить ошибку в самом скрипте или команде запуска.
5. Как узнать путь к PHP
На сервере с доступом по SSH путь к PHP CLI можно посмотреть командой:
which php
Например, результат может быть таким:
/usr/bin/php
Также можно проверить версию PHP:
php -v
На сервере может быть установлено несколько версий PHP. В таком случае для CRON необходимо указать именно тот исполняемый файл, который требуется вашему сайту.Например:
/usr/bin/php8.2 /home/user/www/site.ru/cron-test.php
6. Что означают звёздочки в CRON
Стандартная запись расписания состоит из пяти частей:
* * * * *
│ │ │ │ │
│ │ │ │ └─ день недели
│ │ │ └─── месяц
│ │ └───── день месяца
│ └─────── час
└───────── минута
Несколько примеров.Запуск каждую минуту:
* * * * *
Запуск каждый час:
0 * * * *
Запуск каждый день в 08:15:
15 8 * * *
Запуск каждый день в полночь:
0 0 * * *
Запуск каждое воскресенье в 12:00:
0 12 * * 0
7. Куда записывать ошибки CRON
Если задача запускается, но PHP выдаёт ошибку, удобно временно перенаправить вывод в отдельный файл:
* * * * * /usr/bin/php /home/user/www/site.ru/cron-test.php >> /home/user/cron-error.log 2>&1
В таком случае стандартный вывод и ошибки PHP будут записываться в файл:
cron-error.log
Это сильно упрощает поиск причины, если скрипт работает в браузере, но не запускается через CRON.После того как задача заработает, ненужный вывод можно отключить:
* * * * * /usr/bin/php /home/user/www/site.ru/script.php >/dev/null 2>&1
Но делать это лучше только после проверки — иначе вместе с выводом можно скрыть полезные сообщения об ошибках.
8. Не запускайте CRON через браузер без необходимости
Иногда в планировщике встречаются команды через wget или curl:
wget -q -O - https://site.ru/cron.php
или:
curl -s https://site.ru/cron.php
Такой способ возможен, но если есть доступ к PHP CLI, предпочтительнее запускать PHP-файл непосредственно на сервере.В этом случае служебный скрипт не приходится делать доступным из интернета, а его выполнение меньше зависит от настроек веб-сервера.
9. После проверки удаляем тестовые файлы
Когда убедились, что CRON работает, тестовую задачу необходимо удалить или заменить реальной.Файлы:
cron-test.php
cron-test.log
также лучше удалить, если они больше не нужны.Кратко: как проверить CRON
1. Создаём простой PHP-скрипт, который пишет дату запуска в лог.
2. Добавляем его в CRON с запуском каждую минуту.
3. Ждём несколько минут.
4. Проверяем содержимое лог-файла.
5. Если записи появляются — CRON работает.
6. Если записей нет — проверяем путь к PHP, путь к скрипту и журнал ошибок.
Такой тест позволяет быстро понять, на каком уровне находится проблема: в самом CRON, в PHP или уже в рабочем скрипте.