Исключение критических ошибок PHP в WordPress без остановки сайта

Диагностика проблемы: почему критические ошибки PHP останавливают работу сайта

Критические ошибки PHP в WordPress приводят к появлению белого экрана смерти (White Screen of Death) или сообщению об ошибке, из-за чего сайт становится недоступен. Это часто происходит при разработке новых функций, установке плагинов или тем, а также при некорректном обновлении кода.

Чтобы понять источник ошибки, необходимо включить режим отладки WordPress. Для этого в wp-config.php добавьте:

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

Это позволит записывать ошибки в файл wp-content/debug.log, не показывая их на сайте. Просмотрите этот файл для выявления критических ошибок.

Пошаговое решение: обработка ошибок без остановки сайта

1. Использование конструкции try-catch для перехвата исключений

В PHP с версии 7 можно перехватывать исключения в блоках try-catch. В WordPress это поможет избежать фатальной ошибки, если она возникает в вашем плагине или теме.

try {
    // Ваш код, который может вызвать ошибку
    some_function_that_might_throw();
} catch (\Throwable $e) {
    error_log('Ошибка в my_plugin: ' . $e->getMessage());
    // Можно вывести уведомление админу или записать в лог
}

Важно: оберните потенциально опасный код в такие блоки, чтобы исключения не приводили к остановке всего сайта.

2. Использование функции set_error_handler для перехвата предупреждений и ошибок

Вы можете зарегистрировать собственный обработчик ошибок, который будет логировать ошибки и не позволит им приводить к фатальной остановке.

set_error_handler(function($errno, $errstr, $errfile, $errline) {
    error_log("Ошибка [$errno]: $errstr в $errfile на строке $errline");
    // Можно вернуть true, чтобы подавить стандартную обработку
    return true;
});
<

3. Использование плагина Recovery Mode для автоматического восстановления

В WordPress 5.2+ встроен Recovery Mode, который автоматически отправляет письма администраторам при критических ошибках и позволяет войти в безопасный режим. Убедитесь, что эта функция не отключена.

Проверка результата после внедрения

1. Вызовите код, который раньше приводил к фатальной ошибке, например, временно добавьте ошибочный вызов функции в плагин, обернутый в try-catch.

2. Убедитесь, что сайт продолжает работать, а ошибка записывается в wp-content/debug.log или в системный лог.

3. Проверьте, что администраторы получили уведомление, если включен Recovery Mode.

Частые ошибки и как их исправить

  • Не обернули весь опасный код: Ошибки вне try-catch все равно вызывают остановку. Решение: аккуратно структурируйте код и обрабатывайте все вызовы, которые могут провалиться.
  • Отключен WP_DEBUG_LOG или неверные права на файл лога: Ошибки не записываются. Решение: проверьте права на wp-content/debug.log и настройку wp-config.php.
  • Игнорирование ошибок в set_error_handler: Если функция обработчика возвращает false, ошибки будут обработаны стандартно, что может привести к остановке. Решение: возвращайте true.
  • Неактивирован Recovery Mode: Нет уведомлений и автоматического восстановления. Решение: не отключайте эту функцию и проверяйте почту администратора.

Практические советы по безопасности и производительности

  • В продакшене обязательно отключайте отображение ошибок на сайте (WP_DEBUG_DISPLAY = false), чтобы не раскрывать структуру кода злоумышленникам.
  • Используйте логирование ошибок для быстрого реагирования, но следите за размером файла лога.
  • Регулярно тестируйте плагины и темы в staging-среде, чтобы исключить ошибки до запуска на боевом сайте.
  • Не полагайтесь только на try-catch, проводите статический анализ кода и качественное тестирование.

Сравнение методов обработки ошибок

МетодОписаниеПреимуществаНедостатки
try-catchПерехват исключений в блоках кодаТочный контроль ошибок, предотвращение остановкиТребует оборачивать весь опасный код вручную
set_error_handlerОбработка предупреждений и ошибок PHPГлобальная обработка, удобство логированияНе перехватывает фатальные ошибки (E_ERROR)
Recovery ModeВстроенный WP режим восстановления при критических ошибкахАвтоматическое восстановление, уведомленияРаботает только с WP 5.2 и выше, не предотвращает ошибку, а помогает с ней справиться
Как использовать WPCommunity для создания форума в WordPress
09.01.2026
Как реализовать двойной вызов функций в WordPress
27.02.2026
Как создать простой плагин для автоматического отключения комментариев в WordPress
16.11.2025
Как установить динамические заголовки в WordPress для SEO и удобства пользователей
13.03.2026
Как создать интерактивный квиз в WordPress с помощью плагинов и кода
02.04.2026