Обновления и перенос
После переноса сайта перестал работать cron
После переноса сайт открывается, но задания cron не выполняются. Разберём, что остаётся за пределами скопированных файлов и как проверить расписание.
Что происходит и с чего начать
Cron запускает команды по расписанию на сервере. Его настройки обычно существуют отдельно от файлов сайта, поэтому перенос приложения не переносит расписание автоматически. Также могут измениться путь к проекту, версия PHP, пользователь и переменные окружения. Начните с одной задачи, которая должна была выполниться, и времени её запуска. Важно отличить отсутствие запуска от ошибки внутри команды. Это разные причины, хотя обе выглядят как пропавшее письмо, неготовый отчёт или остановившийся обмен.
Что можно проверить самостоятельно
- Запишите ожидаемое время и последний реальный результат задачи. Уточните часовой пояс старого и нового окружения, чтобы не принять смещение расписания за отсутствие запуска.
- Сравните сохранённый список заданий со старым сервером. Проверьте пути и пользователя, не публикуя секреты, если они ошибочно были включены прямо в команду.
- Уточните, работает ли команда вручную в нужном окружении. Если она отправляет письма или меняет данные, перед повторным тестом проверьте, не выполнялась ли уже на другом сервере.
Как понять результаты проверки
Специалист проверяет факт старта, код завершения и журнал команды. Важно убедиться, что прежний сервер больше не выполняет ту же работу после переезда, иначе восстановленное расписание породит дубли. Для долгих задач также нужна защита от ненужного наложения запусков. Молчаливое отсутствие результата нельзя считать успехом. Практичная схема сохраняет время и состояние последнего выполнения и позволяет отличить «планировщик не запустил» от «команда запущена, но завершилась ошибкой на конкретном шаге».
Что проверяет разработчик
Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.
- Проверьте наличие расписания на новом сервере и пользователя, которому оно принадлежит. Уточните часовой пояс и журнал запусков.
- Используйте явные пути к исполняемому файлу и проекту. Проверьте рабочий каталог и доступность переменных окружения без интерактивной оболочки.
- Сравните вывод команды и код завершения. Если задача запускается, но ничего не делает, проверьте блокировку предыдущего запуска и условия внутри приложения.
На что обратить внимание
Ручной запуск от администратора может успешно читать файлы, недоступные пользователю cron. После переезда также часто забывают перенести расписание, поскольку оно хранится вне каталога сайта.
Как исправляют причину
Восстановите расписание под подходящим пользователем и направьте вывод в закрытый журнал. Предусмотрите защиту от наложения долгих запусков и наблюдение за последним успешным завершением.
Как убедиться, что проблема решена
Дождитесь реального запуска по расписанию, а не только выполните команду вручную. Проверьте бизнес-результат и отсутствие одновременной работы старого сервера.
Дождитесь реального запуска по расписанию и проверьте результат, а не только ручное выполнение. Затем убедитесь, что задача не дублируется на старой площадке. Пропущенные периоды обрабатываются отдельно: не каждый отчёт или обмен нужно повторять за все дни автоматически. Согласуйте, что восстановить, и проверьте, не создаёт ли повтор уже выполненные внешние действия или устаревшие уведомления.