Сообщение «На сайте возникла критическая ошибка» означает, что выполнение PHP-кода прервалось. Само сообщение не указывает причину: её нужно искать в письме WordPress или журнале ошибок.
Начни с последнего изменения на сайте: обновления плагина, темы или PHP. Ниже — как найти проблемный код и восстановить доступ, даже если админка не открывается.
Почему возникает критическая ошибка WordPress
С версии 5.2 у WordPress есть защита от фатальных ошибок. Вместо белого экрана посетители видят короткое сообщение, а в админке и на странице входа текст длиннее:
- На страницах сайта: «На сайте возникла критическая ошибка».
- В админке и на
wp-login.php: «На сайте произошла критическая ошибка. Пожалуйста, проверьте почтовый ящик администратора сайта для получения инструкций».
Чаще всего ошибку вызывает плагин или тема: после обновления, установки, правки functions.php или смены версии PHP на хостинге. Поэтому первый вопрос — что менялось на сайте прямо перед поломкой.
Вход через режим восстановления
WordPress может отправить администратору письмо с подробностями ошибки и ссылкой на режим восстановления. Проверь адрес из «Настройки → Общие» и папку спама. Доставка зависит от работающей почты и от того, успел ли запуститься обработчик ошибок.
- В режиме восстановления сломанный плагин или тема приостанавливаются только для тебя. Посетители по-прежнему видят ошибку, пока ты её не исправишь.
- Зайди в «Плагины», найди отмеченный плагин и деактивируй, обнови или удали его. Затем нажми «Выйти из режима восстановления» в верхней панели.
- По умолчанию повторные письма ограничены интервалом в сутки, и ссылка восстановления действует сутки. Эти интервалы могут быть изменены настройками или фильтрами.
- Если почта на сайте не настроена, письмо не придёт. Можно задать отдельный адрес константой
RECOVERY_MODE_EMAILвwp-config.php, но без работающей почты это не поможет.
Если письма нет, переходи к журналу ошибок — он покажет то же самое.
Как включить debug.log в WordPress
Открой wp-config.php в корне сайта через FTP, файловый менеджер хостинга или SSH. Найди строку define( 'WP_DEBUG', false ); и замени её на три строки. Они должны стоять выше комментария «Это всё, дальше не редактируем»:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
WP_DEBUGвключает режим отладки.WP_DEBUG_LOGпишет ошибки в файлwp-content/debug.log.WP_DEBUG_DISPLAYсо значениемfalseне показывает ошибки посетителям.
Обнови страницу с ошибкой и открой wp-content/debug.log. Если вместо сообщения о критической ошибке на экране появился текст Fatal error: …, значит, вывод ошибок на экран включён. Он печатает ошибку раньше, чем WordPress успевает показать своё сообщение. На рабочем сайте так оставлять нельзя.
В журнале могут оказаться пути к файлам и данные запросов. Если сервер не запрещает доступ, wp-content/debug.log можно скачать по URL. Проверь ограничение доступа и удали временный журнал после диагностики.
Для длительной отладки задай доступный для записи путь вне публичной папки: define( 'WP_DEBUG_LOG', '/home/user/logs/wp-errors.log' );.
Как определить причину по журналу ошибок
Типичная запись в журнале:
PHP Fatal error: Uncaught Error: Call to undefined function some_helper()
in /var/www/html/wp-content/plugins/example-plugin/includes/init.php:42
Сначала посмотри тип ошибки, путь и строку. Папка после plugins/ или themes/ показывает, где выполнение прервалось. Но причина может находиться в зависимости или другом вызове — проверь также стек. Типичные сообщения:
Call to undefined function— код вызывает функцию, которой нет. Обычно плагин зависит от другого плагина, который отключён, или от расширения PHP, которого нет на хостинге.Allowed memory size of … bytes exhausted— не хватило памяти. Временно помогаетdefine( 'WP_MEMORY_LIMIT', '256M' );, но стоит выяснить, какой код столько потребляет.syntax error, unexpected …— опечатка в коде, чаще всего после ручной правкиfunctions.php. В записи указаны файл и строка.Cannot redeclare— две копии одной функции. Например, функцию вставили вfunctions.phpдважды или она уже есть в плагине.- Ошибки после смены версии PHP — старый плагин или тема не поддерживают новую версию. Обнови их или временно верни прежнюю версию PHP в панели хостинга.
Если журнал пуст, проверь настройку логирования и права на запись. Ошибка также могла произойти до загрузки WordPress, например в wp-config.php. В таком случае ищи её в журнале PHP или веб-сервера.
Как отключить плагин или тему без админки
Если журнал указывает на обычный плагин, переименуй его папку в wp-content/plugins/, например из example-plugin в example-plugin.off. WordPress перестанет загружать этот плагин.
Обнови проблемную страницу. Если ошибка исчезла, проверь работу сайта без плагина и найди совместимое исправление. Переименование не устраняет ошибки темы, mu-плагинов или серверной конфигурации.
- Если виновник неизвестен, переименуй всю папку
plugins. Если сайт заработал, верни имя и отключай плагины по одному. - Если ошибка в теме, активируй установленную исправную тему через режим восстановления или WP-CLI. Не рассчитывай, что переименование папки автоматически переключит тему на любом запросе. При необходимости сначала установи стандартную тему с wordpress.org.
Если на сервере есть WP-CLI, то же можно сделать командами. Без флага --skip-plugins WP-CLI загружает плагины и падает с той же ошибкой, что и сайт:
# список активных плагинов, не загружая их
wp plugin list --status=active --skip-plugins --skip-themes
# отключить плагин
wp plugin deactivate example-plugin --skip-plugins --skip-themes
# переключиться на стандартную тему
wp theme activate twentytwentyfive --skip-plugins --skip-themes
Если команды в терминале непривычны, основные собраны в шпаргалке по терминалу.
Что проверить после восстановления сайта
- Верни
define( 'WP_DEBUG', false );и убери две добавленные строки. - Удали
wp-content/debug.log. - Если отключал плагин, проверь, вышло ли исправление, или замени его другим. Возвращать его в работу без исправления нельзя: ошибка повторится.
- Проверь главную, страницу записи, форму и корзину, если она есть: один и тот же плагин может ломать сайт только на части страниц.
Чтобы обновление в следующий раз не уронило рабочий сайт, обновляй плагины сначала на копии сайта и держи свежую резервную копию. Если вместо критической ошибки на страницах появились непонятные символы, это другая проблема — смотри статью о кракозябрах вместо русских букв.