#Суть неисправности и признаки
Сразу после переключения версии PHP публичные страницы WordPress продолжают открываться, но /wp-admin/ показывает «На сайте возникла критическая ошибка» или HTTP 500. Поскольку админка вызывает другие обработчики и загружает дополнительные скрипты плагинов, несовместимость кода может проявляться только там. Не пытайтесь лечить ошибку случайными изменениями памяти PHP и массовым отключением дополнений. Сначала подтвердите версию веб-PHP и найдите точное PHP Fatal error в журнале при открытии админки.
#Почему возникает проблема
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Административный код плагина несовместим с PHPПлагин вызывает отсутствующую функцию или использует синтаксис/поведение, изменившееся в новой версии. | Fatal error указывает на файл из wp-content/plugins и возникает только в /wp-admin/. | Обновить конкретный плагин до совместимой версии или вернуть прежний обработчик. |
| Тема добавляет код только для админкиКод functions.php или библиотека темы подключается при admin_init. | В трассировке виден каталог wp-content/themes. | На тестовой копии проверить исправленную тему. |
| Не хватает расширения в новой версии PHPPHP-FPM новый, но у него отсутствуют mysqli, mbstring, intl, gd или другое требуемое расширение. | В журнале отсутствует класс/функция; команда PHP CLI показывает другой набор модулей. | Проверить расширения именно для PHP сайта. |
| Неверные параметры отдельного пула PHPПосле смены PHP изменились настройки opcache, лимиты или путь сокета. | Фатальная ошибка либо недоступность только некоторых запросов, различия между CLI и FPM. | Сверить журнал и режим обработчика. |
| В браузере лишь кешируется старый ответРедко, но CDN или браузер хранят старую страницу ошибки. | На чистом соединении админка работает, журналы сервера не показывают новых ошибок. | Проверить приватное окно и правила исключения админки из общего кеша. |
#Пошаговая диагностика и устранение
- Сохраните версии и обеспечьте возможность возвратаВ панели хостинга найдите карточку проблемного сайта и запишите старую и новую версии PHP, режим обработки (FastCGI или PHP-FPM), время переключения и используемого пользователя. Создайте резервную копию базы и файлов WordPress, особенно wp-config.php и wp-content. Не меняйте много настроек сразу: тогда нельзя определить, какая правка помогла.
- Подтвердите, что ошибка только в административной частиВ приватном окне откройте главную, одну обычную запись и /wp-admin/. Если публичные страницы тоже дают 500/502, это уже общая ошибка PHP или веб-сервера, и порядок диагностики шире. Если сломана только админка, запишите адрес и время, затем попробуйте открыть /wp-login.php отдельно: его доступность может отличаться от административных страниц.
- Найдите Fatal error в журнале нужного PHP-FPMВ панели хостинга откройте журнал ошибок именно сайта и выбранного обработчика PHP, обновите /wp-admin/ один раз и отыщите запись по времени. Выпишите тип ошибки и путь до файла:
wp-content/plugins/...указывает на дополнение,wp-content/themes/...— на тему,Call to undefined functionможет говорить о модуле. Не публикуйте трассировку целиком с путями, ключами или данными посетителей. - Проверьте письмо с аварийным режимом восстановленияWordPress может прислать администратору письмо с темой о технической проблеме и специальной ссылкой для входа в режим восстановления. Найдите сообщение в почте, проверьте, что отправитель и домен ссылки соответствуют вашему сайту. Открывайте ссылку только в доверенном браузере и не пересылайте её публично: ссылка даёт доступ к диагностике. Если письма нет, продолжайте по журналу, а не по случайным ссылкам.
- Сопоставьте расширение или плагин с версией PHPЕсли в ошибке назван конкретный плагин, посмотрите в его официальной карточке совместимость с новым PHP и версию обновления. На тестовой копии сайта с теми же настройками обновите только этот плагин, повторите открытие /wp-admin/ и проверьте сохранение черновика. Если несовместимость подтверждена, используйте исправленную версию или план возврата PHP, а не произвольное изменение системных файлов WordPress.
- Уточните обработчик и его модулиВ панели сравните версию PHP для сайта и PHP в командной строке:
php -vможет показывать совершенно другую среду. Проверьте список расширений именно для режима, обслуживающего сайт. Если журнал указывает на отсутствие mysqli/intl/mbstring, попросите хостинг установить модуль в нужную версию. Не устанавливайте вручную пакеты PHP через apt на управляемом хостинге без учёта панели: можно нарушить конфигурацию других сайтов. - Временно верните прежнюю версию только при необходимостиЕсли админка нужна срочно, а код плагина ещё не исправлен, в панели управления можно вернуть исходную поддерживаемую версию PHP, записанную в первом шаге. Делайте это после резервной копии и проверки совместимости, в согласованное время. Устаревшая версия может содержать уязвимости: возврат допустим как краткосрочная мера при плане обновления кода, а не как постоянное решение.
- Проверьте сайт и откажитесь от опасной отладкиПосле исправления и безопасного перезапуска PHP-FPM, если он действительно требовался, откройте /wp-admin/, проверьте меню и редактирование тестовой записи. Убедитесь, что в журнале больше нет Fatal error. Если включали WP_DEBUG, уберите временное логирование из публичного каталога либо убедитесь в его защищённости; WP_DEBUG_DISPLAY должен оставаться выключенным для посетителей. При неуспехе верните прежнюю конфигурацию и приложите точную ошибку специалисту.
- Пример настройки временной отладки в wp-config.php — не команда терминалаPHPПример настройки временной отладки в wp-config.php — не команда терминала. Добавлять перед строкой «That’s all, stop editing!», только если константы ещё не определены; при существующих определениях корректировать их, не дублируя. На рабочем сайте безопаснее журнал PHP панели хостинга; если временно создаётся wp-content/debug.log, проверьте, что он недоступен публично, и отключите отладку после проверки.
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
#Как проверить результат и что делать, если не помогло
Успех — нормальное открытие /wp-admin/, сохранение тестовой записи и отсутствие новых фатальных ошибок в журнале PHP после повторного обращения. Если ошибка появилась из-за обновления конкретного плагина или расширения, исправляйте совместимость именно этого компонента. Не называйте отсутствие error_log доказательством исправления: возможно, просматривается журнал не того PHP-FPM-пула.