Плагин Error Monitor & Notifier для WordPress с кодовым названием «Енот» (только т-с-с!) автоматически отлавливает ошибки и исключения, которые не обработали в PHP-коде вручную. Плагин умеет обнаруживать баги, в каком бы месте скрипта или на какой бы странице сайта не возникла ошибка.
Плагин также перехватывает ошибки JavaScript-кода в браузере клиента и сообщает об ошибках БД. Перехват JS-ошибок и ошибок при запросах к базе данных отдельно включаются в настройках плагина и дополняют функции мониторинга ошибок в PHP-коде, превращая плагин Error Monitor & Notifier в инструмент комплексного отслеживания сбоев на Вордпресс-сайте.
Механизм перехвата и обработки ошибок на WordPress-сайте
Плагин регистрирует набор обработчиков, которые помогают перехватывать ошибки всех уровней.
Отдельный обработчик перехватывает ошибки уровня уведомления E_*NOTICE, предупреждения E_*WARNING и фатальной ошибки E_*ERROR, включая ошибки пользовательского уровня наподобие E_USER_WARNING.
Дополнительно плагин регистрирует обработчик исключений, который перехватывает критические ошибки подтипа Throwable (Error|Exception) наподобие ValueError, ParseError или TypeError, и исключений InvalidArgumentException или UnexpectedValueException, которые не обработали вручную. Обработчик исключений обнаружит ошибку, даже если она возникла в неожиданном месте кода: в файле functions.php, в вашем или стороннем плагине, теме или даже файлах ядра WordPress. Error Monitor & Notifier перехватывает 100 % исключений, которые не обработали в блоке try-catch
. Это те ошибки, при которых в логе появляются записи Fatal error: Uncaught Exception или Fatal error: Uncaught Error.
При критических ошибках PHP завершает работу скриптов и работа сайта завершается. При этом каждая операция, которая выполнялась в момент сбоя, тоже завершается. Действия, которые планировались на сервере после точки сбоя, — не выполняются, включая обработку заказов, взаимодействие с базой данных, уведомления пользователей и другие операции. При таких сбоя пользователь часто видит белый экран «смерти» и остается наедине с ошибкой.
Кроме обработчиков ошибок и исключений, плагин регистрирует обработчик события shutdown, которое наступает в конце выполнения главного потока PHP-кода. Функция завершения работы срабатывает каждый раз после выполнения PHP-скрипта. Плагин Error Monitor & Notifier не выполняет действий, когда скрипты завершают работу нормально, но «вклинивание» в процесс на последнем этапе жизненного цикла помогает плагину получить и обработать последнюю ошибку. Этот механизм гарантирует перехват и обработку каждой ошибки, которая возникла в коде.
Error Monitor & Notifier уважает другие обработчики и возвращает управление обработкой ошибок и исключений сразу после логирования и отправки уведомления об ошибке владельцу сайта, если только не обнаружил ошибку на этапе завершения скрипта, когда другая обработка становится бессмысленной.
Ранняя загрузка плагина
После активации плагин Error Monitor & Notifier создает Must-Use-плагин, который загружает сам плагин Error Monitor & Notifier на ранней стадии загрузки ядра WordPress, еще до загрузки других плагинов, тем, шаблонов или других частей сайта.
За счет ранней загрузки плагина и первоочередной регистрации обработчиков ошибок и исключений плагин начинает мониторинг ошибок фактически сразу после обращения к сайту.
Это краткий, но важный для знакомства с механизмом обработки ошибок плагином Error Monitor & Notifier абзац.
После активации плагина лучше проверить, что каталог
wp-content/mu-plugins
содержит файл MU-плагина с названиемenotpremiummu.php
илиenotmu.php
для бесплатной версии модуля.
Как включить раннюю загрузку мониторинга ошибок вручную
В отдельных редких случаях не получается запустить раннюю загрузку плагина из-за ограничений прав на запись в каталог mu-plugins
или неправильных настроек владельца директории.
- В каталоге
wp-content
создайте каталогmu-plugins
, если каталог еще не существует, например:/var/www/example.com/wp-content/mu-plugins
или/home/john/public_html/wp-content/mu-plugins
- Проверьте, чтобы права доступа на каталог
mu-plugins
соответствовали маске 0755 - Убедитесь, что владелец и группа каталога
mu-plugins
повторяют владельца и группу, которым принадлежит каталогwp-content
- Скопируйте файл
enot*mu.php
из корневого каталога плагина Error Monitor & Notifier в каталогwp-content/mu-plugins
- Готово! Теперь плагин перехватывает ошибки с самого начала загрузки WordPress.
Режим восстановления WordPress
Recovery mode, которой появился в WordPress версии 5.2, справляется с критическими ошибками, но не с каждой, и присылает уведомление не чаще одного раза в день для каждого типа ошибки, хотя интервал переопределяется фильтрами.
Стандартный режим восстановления не запускается при большей части ошибок в плагине магазина WooCommerce или при ошибках, которые возникают в AJAX-запросах, когда отправляют форму или оформляют заказ.
Error Monitor & Notifier обнаруживает каждую возможную ошибку или исключение, включая ошибки в JavaScript-коде или SQL-запросах. Для настройки мониторинга ошибок не потребуется писать код; управление чувствительностью к уровню ошибок, каналами оповещения или приостановкой повторных сообщений доступно в административной части сайта.