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