Белый экран после обновления PHP: причины и решение
Две одинаковые мензурки на чертёжной подложке: одна полна белых шариков, другая пуста, на дне один изумрудный шарик

Белый экран после обновления PHP: причины и решение

Белый экран после обновления PHP — это скрытая фатальная ошибка. Включите вывод ошибок, найдите несовместимый плагин или модуль, при необходимости откатите версию.

Белый экран после обновления PHP: что это и как вернуть сайт

Белый экран после обновления PHP означает, что скрипт упал с фатальной ошибкой, а сервер скрыл её текст. Чтобы вылечить сайт, нужно вернуть вывод ошибок или открыть лог, найти проблемный файл и либо обновить его, либо временно откатить версию PHP.

Белый экран — не поломка сайта целиком, а симптом: где-то в коде или настройках новая версия PHP споткнулась о то, что старая прощала.

Ситуация знакома многим владельцам сайтов: хостинг переключил PHP на 8.1 или вы сами выбрали новую версию в панели, а главная страница и админка превратились в пустой белый лист. Ни сообщения, ни кода, ни подсказки. Разберём, почему так происходит, как за 15–30 минут найти причину и что сделать, чтобы не потерять посетителей и позиции в Яндексе и Google.

Почему обновление PHP приводит к пустой странице

PHP развивается быстро, и каждая крупная версия что-то убирает из языка. Функции, которые годами использовались в старых темах и плагинах, объявляются устаревшими, а затем удаляются полностью. Например, в PHP 7.0 исчезли функции mysql_*, а в PHP 8.0 — create_function() и each(). Если сайт или плагин продолжает их вызывать, интерпретатор останавливает выполнение с ошибкой Fatal error.

Почему же вы не видите саму ошибку? На рабочих сайтах параметр display_errors по умолчанию отключён: это правильно с точки зрения безопасности, ведь тексты ошибок могут раскрывать пути к файлам и структуру проекта. В итоге браузер получает пустой ответ, и вместо диагностики вы видите белое поле.

Кроме удалённых функций, причиной бывают и другие вещи: не подключено нужное расширение (mysqli, mbstring, curl, gd, intl, xml), не совпадает версия загрузчика ionCube или Zend Guard, в .htaccess остались директивы php_value, которые не работают в режиме PHP-FPM, или не хватает memory_limit для новой версии.

цепочка: от обновления до белого экрана
01Смена версии PHP

Например, с 7.4 на 8.1 или 8.2 в панели хостинга

02Несовместимый код

Плагин, тема или модуль вызывает удалённую функцию

03Fatal error

Выполнение скрипта прерывается на середине

04display_errors = off

Текст ошибки скрыт, браузер получает пустой ответ

Версия PHPЧто изменилосьТипичный симптом на сайте
7.0Удалены функции mysql_*Белый экран в старых темах и самописных модулях
7.2create_function() и each() признаны устаревшимиПредупреждения в логе, сайт пока работает
8.0Удалены create_function() и each(), строже типы и сравненияБелый экран или ошибка 500 в старых плагинах
8.1Передача null в параметры встроенных функций объявлена устаревшейЛавина Deprecated в логе, у некоторых плагинов — сбои
8.2Динамические свойства объектов объявлены устаревшимиРост числа предупреждений, редкие падения в устаревшем коде

Сначала увидеть ошибку, потом лечить

Главное правило диагностики: не гадайте. Любые правки вслепую — отключение плагинов наугад, переустановка CMS — только усложняют картину. Нужен точный текст ошибки: он называет файл, строку и причину, и в большинстве случаев этого достаточно, чтобы решить проблему.

Самый безопасный источник — журналы. Откройте error_log в корне сайта или в каталоге логов хостинга, а также лог PHP-FPM и лог веб-сервера (Apache или Nginx). Если логов нет, временно включите вывод ошибок. Делайте это ненадолго и лучше ограничив доступ по IP, чтобы случайные посетители и поисковые роботы не увидели служебную информацию.

Как найти причину белого экрана за 6 шагов

  1. 01

    Сделайте резервную копию файлов и базы данных. Даже если сайт уже не работает, это страховка от случайных ошибок при правках.

  2. 02

    Откройте журнал ошибок: error_log сайта, лог PHP-FPM и лог Apache или Nginx в панели хостинга. Найдите последнюю запись Fatal error — в ней указан файл и номер строки.

  3. 03

    Если логов нет, включите вывод ошибок: в начале index.php добавьте ini_set('display_errors', 1) и error_reporting(E_ALL). После диагностики обязательно уберите эти строки.

  4. 04

    В WordPress включите в wp-config.php константы WP_DEBUG и WP_DEBUG_LOG со значением true. Ошибки будут записываться в файл wp-content/debug.log.

  5. 05

    Определите виновника по пути в ошибке: wp-content/plugins/название — плагин, wp-content/themes/название — тема, иначе ядро CMS или расширение PHP. Переименуйте папку плагина через FTP или файловый менеджер, чтобы его отключить.

  6. 06

    Проверьте список расширений PHP в панели хостинга и сравните с прежней версией: часто после смены версии отключаются mysqli, mbstring, curl, gd, intl или xml.

универсальный php

Временный вывод ошибок

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

Добавьте в начало index.php, обновите страницу и сразу удалите после диагностики.

wordpress

Журнал отладки

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Ошибки не показываются посетителям, а пишутся в wp-content/debug.log.

Быстрое спасение: откатите версию PHP

Если сайт приносит заявки или продажи, не тратьте время на раскопки при включённом белом экране. Сначала верните прежнюю версию PHP в панели хостинга: в ISPmanager, cPanel или панели вашего провайдера это раздел «Версия PHP» или «PHP-настройки». Через минуту-две сайт заработает, а клиенты и поисковые роботы снова получат нормальные страницы.

Дальше работайте спокойно: создайте тестовую копию сайта на поддомене, переключите её на новую версию PHP и ищите несовместимость уже там. Откат — это не поражение, а способ выиграть время. Но помните, что старые версии PHP перестают получать исправления безопасности, поэтому окончательно оставаться на них нельзя.

Как исправить найденную несовместимость

Дальнейшие действия зависят от того, на что указывает лог. Если виноват плагин или тема, сначала проверьте, нет ли у них обновления, которое поддерживает вашу версию PHP. В большинстве случаев разработчики уже выпустили совместимый релиз. Если обновления нет, ищите аналог: плагин, который не развивается несколько лет, — это постоянный источник проблем.

Если ошибка в самописном коде, его нужно поправить: заменить удалённые функции на современные, перейти с mysql_* на mysqli или PDO, привести работу со строками и массивами к новым правилам. Для массовой проверки подойдёт инструмент PHPCompatibility для phpcs: он просматривает проект и перечисляет места, несовместимые с выбранной версией. Быструю проверку синтаксиса отдельного файла даёт команда php -l.

Если причина в расширениях, достаточно включить недостающие модули в панели хостинга. А если сайт использует закрытый код под ionCube, установите загрузчик, подходящий под новую версию PHP, или попросите вендора выпустить совместимую сборку.

Типичные ошибки при борьбе с белым экраном

Паника и правки наугад чаще всего превращают небольшую проблему в долгий простой.

Как делают неправильно

  • Оставляют display_errors включённым на боевом сайте после диагностики
  • Удаляют все плагины подряд, не читая лог
  • Обновляют PHP сразу на рабочем сайте без резервной копии
  • Перескакивают через несколько версий, например с 5.6 сразу на 8.2
  • Правят файлы ядра CMS вместо обновления плагина

Как правильно

  1. 01

    Отключайте вывод ошибок сразу после диагностики и читайте логи

  2. 02

    Определяйте виновника по пути файла в сообщении Fatal error

  3. 03

    Тестируйте новую версию PHP на копии сайта и держите свежий бэкап

  4. 04

    Переходите поэтапно: 7.4 → 8.0 → 8.1 и проверяйте сайт на каждом шаге

  5. 05

    Обновляйте плагины и темы, а ядро не трогайте

Чем белый экран опасен для поисковой выдачи

Для посетителя белый экран — это потерянный клиент. Для поисковых систем — сигнал, что сайт недоступен. Роботы Яндекса и Google при обходе получают код 500 или пустую страницу; если так продолжается долго, они реже заходят на сайт, а страницы могут временно выпадать из индекса.

Короткий сбой на несколько часов обычно проходит без последствий. Но если проблема длится сутки и больше, позиции действительно могут просесть. Поэтому после восстановления проверьте отчёты по ошибкам обхода и убедитесь, что трафик возвращается.

Если на время правок сайт нужно закрыть, отдавайте страницу-заглушку с HTTP-кодом 503 и заголовком Retry-After. Так Яндекс и Google поймут, что недоступность временная, и не будут исключать страницы из индекса.
чек-лист после восстановления
  • Главная и ключевые страницы отдают 200.Проверьте каталог, карточки товаров, формы заявок и корзину.
  • Вывод ошибок снова отключён.В продакшене display_errors должен быть выключен, а ошибки пишутся в журнал.
  • Яндекс Вебмастер и Google Search Console без новых ошибок.Посмотрите отчёты об обходе и доступности страниц.
  • Яндекс Метрика и Google Analytics показывают трафик.Сравните визиты и конверсии с обычными днями до сбоя.
  • Лог ошибок чист.Deprecated-предупреждения устраните заранее, пока они не превратились в Fatal error.

Как подготовиться к обновлению PHP без белого экрана

  1. 01

    Тестовая копия сайта на поддомене: проверяете новую версию PHP без риска для посетителей

  2. 02

    Свежая резервная копия файлов и базы: откат за считанные минуты

  3. 03

    Предварительная проверка кода через PHPCompatibility и php -l: проблемы видны до переключения

  4. 04

    Актуальные плагины, темы и CMS: у большинства уже есть поддержка PHP 8.x

  5. 05

    Поэтапный переход между версиями: проще понять, какое изменение вызвало сбой

  6. 06

    Включённое журналирование ошибок: следующая проблема диагностируется за минуты

Когда пора подключать разработчика

Многие случаи решаются самостоятельно: включили лог, нашли плагин, обновили или заменили его. Но есть ситуации, когда лучше сразу обратиться к специалисту: сайт самописный и никто не помнит, как он устроен; ошибка указывает на ядро CMS или закрытый код; вместе с белым экраном появились ошибки базы данных; сайт приносит деньги, и каждый час простоя стоит дороже работы разработчика.

Грамотный специалист не только вернёт сайт к жизни, но и приведёт код в соответствие с современным PHP, чтобы следующее обновление прошло без сюрпризов. Это дешевле, чем регулярно разбирать аварии.

Белый экран лечится, если действовать по порядку

Белый экран после обновления PHP — это скрытая ошибка, которую можно найти в логе и исправить, не теряя клиентов.
  1. 01

    Откройте журнал ошибок или включите WP_DEBUG и найдите строку Fatal error

  2. 02

    Определите виновника по пути файла: плагин, тема, расширение или ядро

  3. 03

    При срочности откатите версию PHP и продолжите диагностику на тестовой копии

  4. 04

    После исправления отключите вывод ошибок и проверьте сайт в Яндекс Вебмастере и Google Search Console

Чтобы следующее обновление PHP не превратилось в аварию, тестируйте его на копии, держите свежие бэкапы и вовремя обновляйте плагины. Тогда переход на актуальную версию станет рутинной задачей, а не стрессом.

Часто задаваемые вопросы

Сайт ушёл в белый экран после обновления PHP? Поможем

Найдём причину в логах, восстановим работу и подготовим сайт к безопасному переходу на актуальный PHP

Бесплатный первичный аудитРабота на тестовой копииРезервная копия перед правками

Типовой сбой устраняется за несколько часов

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

Также администрация сайта получает данные об IP-адресе посетителей, типе браузера, времени нахождения на сайте и прочие подобные сведения через сервисы статистики.

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

Полученные сведения не передаются третьим лицам, за исключением случаев исполнения обязательств перед клиентом (с его разрешения) и обоснованных требований закона.

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.