Отслеживание ошибок на сайте WordPress — важная задача для поддержания его стабильной работы и быстрого реагирования на проблемы. В этой статье рассмотрим, как настроить автоматический сбор и отправку отчётов по ошибкам, используя встроенные возможности PHP и WordPress, а также популярные плагины. Это позволит вам своевременно получать уведомления и анализировать сбои без постоянного ручного мониторинга.
Почему важен автоматический отчёт об ошибках WordPress
Ошибки на сайте могут появляться по разным причинам: несовместимость плагинов, ошибки в коде темы, проблемы с сервером и другое. Если не отслеживать их вовремя, это может привести к ухудшению пользовательского опыта, потере посетителей и снижению конверсии.
Ручное включение WP_DEBUG и просмотр логов — это неудобно и требует постоянного контроля. Автоматизация процесса поможет быстро выявлять критические сбои и оперативно их исправлять.
Основные преимущества автоматизированных отчётов:
- Экономия времени — не нужно постоянно проверять логи.
- Своевременное уведомление — ошибки приходят сразу на почту или в мессенджер.
- История ошибок — можно анализировать повторяющиеся проблемы.
Настройка автоматического логирования ошибок в WordPress
Первым шагом включим логирование ошибок PHP и WordPress. Для этого добавим в wp-config.php следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('log_errors', 'On');
@ini_set('error_log', WP_CONTENT_DIR . '/debug.log');
Эти настройки включают режим отладки, записывают ошибки в файл wp-content/debug.log, и отключают вывод ошибок пользователям.
Теперь сервер будет сохранять все ошибки и предупреждения в лог. Далее нужно автоматизировать отправку этого файла на email или в систему уведомлений.
Как отправлять отчёты об ошибках по email автоматически
Для отправки логов по почте можно использовать WP-Cron — встроенный планировщик заданий WordPress. Добавим функцию, которая будет читать лог и отправлять его на email админа. Пример кода для файла functions.php вашей темы или плагина:
function wptest_send_error_log_report() {
$log_file = WP_CONTENT_DIR . '/debug.log';
if (!file_exists($log_file)) {
return;
}
$log_size = filesize($log_file);
if ($log_size === 0) {
// Лог пустой, отправлять нечего
return;
}
$log_content = file_get_contents($log_file);
if (!$log_content) {
return;
}
$to = get_option('admin_email');
$subject = 'Отчёт об ошибках WordPress на сайте ' . get_bloginfo('name');
$headers = ['Content-Type: text/plain; charset=UTF-8'];
wp_mail($to, $subject, $log_content, $headers);
// После отправки очищаем лог
file_put_contents($log_file, '');
}
// Регистрируем событие в WP-Cron, если еще не зарегистрировано
if (!wp_next_scheduled('wptest_error_log_report_hook')) {
wp_schedule_event(time(), 'daily', 'wptest_error_log_report_hook');
}
add_action('wptest_error_log_report_hook', 'wptest_send_error_log_report');
Этот код будет ежедневно отправлять содержимое файла логов на email администратора и очищать лог. Вы можете изменить периодичность, задав 'hourly' (ежечасно) или 'twicedaily' (дважды в день).
Использование плагинов для расширенного мониторинга ошибок
Если вы хотите более удобный и функциональный способ, можно использовать плагины, которые собирают ошибки и уведомляют вас:
- WP Activity Log — мониторинг активности и ошибок, с возможностью отправки email.
- Query Monitor — инструмент разработки, который помогает выявлять PHP ошибки и медленные запросы, но без автоматической рассылки.
- Clearfy Pro — плагин для оптимизации и безопасности, содержит модули для расширенного логирования и уведомлений.
Для отправки уведомлений в мессенджеры (Telegram, Slack) можно использовать дополнительные плагины, например WP Telegram или настроить отправку через вебхуки с помощью собственного кода.
Пример отправки ошибки в Telegram через webhook и WP-Cron
function wptest_send_telegram_error_report() {
$log_file = WP_CONTENT_DIR . '/debug.log';
if (!file_exists($log_file) || filesize($log_file) === 0) {
return;
}
$log_content = file_get_contents($log_file);
if (!$log_content) {
return;
}
$bot_token = 'ваш_токен_бота';
$chat_id = 'ваш_chat_id';
$message = urlencode("Отчёт об ошибках на сайте " . get_bloginfo('name') . ":\n" . substr($log_content, -4000)); // Telegram лимит 4096 символов
$url = "https://api.telegram.org/bot{$bot_token}/sendMessage?chat_id={$chat_id}&text={$message}";
wp_remote_get($url);
// Очистка лога после отправки
file_put_contents($log_file, '');
}
if (!wp_next_scheduled('wptest_telegram_error_report_hook')) {
wp_schedule_event(time(), 'daily', 'wptest_telegram_error_report_hook');
}
add_action('wptest_telegram_error_report_hook', 'wptest_send_telegram_error_report');
Этот пример показывает, как можно интегрировать уведомления в Telegram без дополнительных плагинов.
Как безопасно работать с логами ошибок на продакшене
Важно правильно настроить права доступа к файлу логов, чтобы посторонние не могли его прочитать. Обычно файл debug.log находится в wp-content, и к нему нет прямого доступа из браузера, если сервер настроен по умолчанию.
Рекомендуется добавить в wp-content/.htaccess правило для запрета доступа к debug.log:
<Files debug.log>
Order allow,deny
Deny from all
</Files>
Также не забудьте отключать режим отладки на рабочем сайте после решения всех проблем, чтобы не создавать избыточных логов и не снижать производительность.
Резюме и рекомендации
Автоматический отчёт об ошибках — незаменимый инструмент для поддержания качества сайта WordPress. Выбор между собственным кодом и плагинами зависит от ваших навыков и требований:
- Если хотите лёгкое и быстрое решение — используйте плагины типа Clearfy Pro с готовыми модулями уведомлений.
- Для более гибкой настройки — реализуйте скрипты на PHP с использованием WP-Cron, как показано в примерах.
Не забывайте регулярно проверять логи, обновлять плагины и темы, а также тестировать уведомления, чтобы быть уверенными, что вы всегда в курсе состояния вашего сайта.