
Белый экран после обновления 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 для новой версии.
Например, с 7.4 на 8.1 или 8.2 в панели хостинга
Плагин, тема или модуль вызывает удалённую функцию
Выполнение скрипта прерывается на середине
Текст ошибки скрыт, браузер получает пустой ответ
| Версия PHP | Что изменилось | Типичный симптом на сайте |
|---|---|---|
| 7.0 | Удалены функции mysql_* | Белый экран в старых темах и самописных модулях |
| 7.2 | create_function() и each() признаны устаревшими | Предупреждения в логе, сайт пока работает |
| 8.0 | Удалены create_function() и each(), строже типы и сравнения | Белый экран или ошибка 500 в старых плагинах |
| 8.1 | Передача null в параметры встроенных функций объявлена устаревшей | Лавина Deprecated в логе, у некоторых плагинов — сбои |
| 8.2 | Динамические свойства объектов объявлены устаревшими | Рост числа предупреждений, редкие падения в устаревшем коде |
Сначала увидеть ошибку, потом лечить
Главное правило диагностики: не гадайте. Любые правки вслепую — отключение плагинов наугад, переустановка CMS — только усложняют картину. Нужен точный текст ошибки: он называет файл, строку и причину, и в большинстве случаев этого достаточно, чтобы решить проблему.
Самый безопасный источник — журналы. Откройте error_log в корне сайта или в каталоге логов хостинга, а также лог PHP-FPM и лог веб-сервера (Apache или Nginx). Если логов нет, временно включите вывод ошибок. Делайте это ненадолго и лучше ограничив доступ по IP, чтобы случайные посетители и поисковые роботы не увидели служебную информацию.
Как найти причину белого экрана за 6 шагов
- 01
Сделайте резервную копию файлов и базы данных. Даже если сайт уже не работает, это страховка от случайных ошибок при правках.
- 02
Откройте журнал ошибок: error_log сайта, лог PHP-FPM и лог Apache или Nginx в панели хостинга. Найдите последнюю запись Fatal error — в ней указан файл и номер строки.
- 03
Если логов нет, включите вывод ошибок: в начале index.php добавьте ini_set('display_errors', 1) и error_reporting(E_ALL). После диагностики обязательно уберите эти строки.
- 04
В WordPress включите в wp-config.php константы WP_DEBUG и WP_DEBUG_LOG со значением true. Ошибки будут записываться в файл wp-content/debug.log.
- 05
Определите виновника по пути в ошибке: wp-content/plugins/название — плагин, wp-content/themes/название — тема, иначе ядро CMS или расширение PHP. Переименуйте папку плагина через FTP или файловый менеджер, чтобы его отключить.
- 06
Проверьте список расширений PHP в панели хостинга и сравните с прежней версией: часто после смены версии отключаются mysqli, mbstring, curl, gd, intl или xml.
Временный вывод ошибок
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);Добавьте в начало index.php, обновите страницу и сразу удалите после диагностики.
Журнал отладки
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 вместо обновления плагина
Как правильно
- 01
Отключайте вывод ошибок сразу после диагностики и читайте логи
- 02
Определяйте виновника по пути файла в сообщении Fatal error
- 03
Тестируйте новую версию PHP на копии сайта и держите свежий бэкап
- 04
Переходите поэтапно: 7.4 → 8.0 → 8.1 и проверяйте сайт на каждом шаге
- 05
Обновляйте плагины и темы, а ядро не трогайте
Чем белый экран опасен для поисковой выдачи
Для посетителя белый экран — это потерянный клиент. Для поисковых систем — сигнал, что сайт недоступен. Роботы Яндекса и Google при обходе получают код 500 или пустую страницу; если так продолжается долго, они реже заходят на сайт, а страницы могут временно выпадать из индекса.
Короткий сбой на несколько часов обычно проходит без последствий. Но если проблема длится сутки и больше, позиции действительно могут просесть. Поэтому после восстановления проверьте отчёты по ошибкам обхода и убедитесь, что трафик возвращается.
- Главная и ключевые страницы отдают 200.Проверьте каталог, карточки товаров, формы заявок и корзину.
- Вывод ошибок снова отключён.В продакшене display_errors должен быть выключен, а ошибки пишутся в журнал.
- Яндекс Вебмастер и Google Search Console без новых ошибок.Посмотрите отчёты об обходе и доступности страниц.
- Яндекс Метрика и Google Analytics показывают трафик.Сравните визиты и конверсии с обычными днями до сбоя.
- Лог ошибок чист.Deprecated-предупреждения устраните заранее, пока они не превратились в Fatal error.
Как подготовиться к обновлению PHP без белого экрана
- 01
Тестовая копия сайта на поддомене: проверяете новую версию PHP без риска для посетителей
- 02
Свежая резервная копия файлов и базы: откат за считанные минуты
- 03
Предварительная проверка кода через PHPCompatibility и php -l: проблемы видны до переключения
- 04
Актуальные плагины, темы и CMS: у большинства уже есть поддержка PHP 8.x
- 05
Поэтапный переход между версиями: проще понять, какое изменение вызвало сбой
- 06
Включённое журналирование ошибок: следующая проблема диагностируется за минуты
Когда пора подключать разработчика
Многие случаи решаются самостоятельно: включили лог, нашли плагин, обновили или заменили его. Но есть ситуации, когда лучше сразу обратиться к специалисту: сайт самописный и никто не помнит, как он устроен; ошибка указывает на ядро CMS или закрытый код; вместе с белым экраном появились ошибки базы данных; сайт приносит деньги, и каждый час простоя стоит дороже работы разработчика.
Грамотный специалист не только вернёт сайт к жизни, но и приведёт код в соответствие с современным PHP, чтобы следующее обновление прошло без сюрпризов. Это дешевле, чем регулярно разбирать аварии.
Белый экран лечится, если действовать по порядку
- 01
Откройте журнал ошибок или включите WP_DEBUG и найдите строку Fatal error
- 02
Определите виновника по пути файла: плагин, тема, расширение или ядро
- 03
При срочности откатите версию PHP и продолжите диагностику на тестовой копии
- 04
После исправления отключите вывод ошибок и проверьте сайт в Яндекс Вебмастере и Google Search Console
Чтобы следующее обновление PHP не превратилось в аварию, тестируйте его на копии, держите свежие бэкапы и вовремя обновляйте плагины. Тогда переход на актуальную версию станет рутинной задачей, а не стрессом.
Часто задаваемые вопросы
Новая версия PHP не смогла выполнить часть кода: функция удалена, расширение не подключено или плагин несовместим. Возникает фатальная ошибка, а вывод ошибок на продакшене отключён, поэтому вместо текста пользователь видит пустую страницу.
Самый быстрый путь — вернуть прежнюю версию PHP в панели хостинга (ISPmanager, cPanel, панель провайдера). Сайт заработает за минуту, а причину можно искать уже без спешки на тестовой копии.
В журнале ошибок PHP (error_log), в логах веб-сервера Apache или Nginx и в логе PHP-FPM. В WordPress дополнительно включите WP_DEBUG и WP_DEBUG_LOG, и ошибки попадут в файл wp-content/debug.log.
Если страницы отдают код 500 или пустой ответ в течение нескольких часов и дольше, роботы Яндекса и Google фиксируют недоступность и могут снизить частоту обхода. Короткий сбой обычно не ломает позиции, затяжной — может.
Сначала проверьте совместимость кода, темы и плагинов на тестовой копии сайта, сделайте резервную копию файлов и базы и обновляйтесь поэтапно, например с 7.4 до 8.0, затем до 8.1.
Сайт ушёл в белый экран после обновления PHP? Поможем
Найдём причину в логах, восстановим работу и подготовим сайт к безопасному переходу на актуальный PHP
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Типовой сбой устраняется за несколько часов



