wpdebug.ru wordpress WP Debug

Как использовать WP_DEBUG_LOG для детальной отладки WordPress

Отладка WordPress часто сводится к использованию константы WP_DEBUG в файле wp-config.php. Однако для более детального анализа ошибок и предупреждений удобнее включить логирование в файл с помощью WP_DEBUG_LOG. В этой статье подробно расскажу, как правильно использовать WP_DEBUG_LOG для эффективного решения проблем в WordPress, с примерами и советами.

Что такое WP_DEBUG_LOG и зачем он нужен

WP_DEBUG_LOG — это дополнительная настройка, которая при включении сохраняет все ошибки, предупреждения и уведомления PHP в отдельный лог-файл debug.log в папке wp-content. Это удобно, потому что ошибки не выводятся на экран, а аккумулируются в одном месте для детального анализа.

Без WP_DEBUG_LOG ошибки либо не видны вовсе (если WP_DEBUG_DISPLAY выключен), либо загромождают интерфейс сайта, что не всегда удобно. Лог позволяет последовательно просмотреть все ошибки за нужный период без риска пропустить важное сообщение.

Кроме того, лог полезен при отладке на продакшене, где вывод ошибок на экран запрещён по соображениям безопасности.

Как включить WP_DEBUG_LOG с правильными настройками

Для включения логирования откройте файл wp-config.php и добавьте или измените следующие строки:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);

Объяснение:

  • WP_DEBUG = true — включает режим отладки WordPress.
  • WP_DEBUG_LOG = true — включает запись логов в файл wp-content/debug.log.
  • WP_DEBUG_DISPLAY = false — отключает вывод ошибок на экран, чтобы не мешать посетителям.
  • @ini_set('display_errors', 0) — гарантирует, что ошибки не выводятся на уровне PHP.

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

Как читать и анализировать debug.log

Лог содержит записи с временными метками, типом ошибки и сообщением. Пример строки из debug.log:

[23-Jun-2024 15:42:10 UTC] PHP Warning:  Undefined variable $wpdebug_var in /var/www/html/wp-content/themes/root/functions.php on line 56

Для анализа лога:

  • Откройте файл через SFTP или в панели хостинга.
  • Ищите ошибки типа PHP Fatal error, Warning и Notice.
  • Обращайте внимание на файл и строку, где произошла ошибка.
  • Проверяйте, какие плагины или темы упоминаются в ошибках.

Если лог слишком большой, можно использовать команды Linux:

tail -n 100 wp-content/debug.log

для просмотра последних 100 строк.

Примеры типичных ошибок и как их решать с помощью WP_DEBUG_LOG

1. Ошибка с неопределённой переменной

Ошибка:

PHP Notice:  Undefined variable $custom_var in /wp-content/plugins/my-plugin/my-plugin.php on line 120

Решение: Проверьте, что переменная объявлена и инициализирована до использования. Например, добавьте в начало функции:

function wpdebug_init_custom_var() {
    global $custom_var;
    if (!isset($custom_var)) {
        $custom_var = '';
    }
}

2. Fatal error из-за отсутствия функции

Ошибка:

PHP Fatal error:  Call to undefined function my_plugin_function() in /wp-content/plugins/my-plugin/my-plugin.php on line 50

Решение: Убедитесь, что функция определена до вызова или подключите нужный файл. Например:

require_once plugin_dir_path(__FILE__) . 'includes/functions.php';

3. Предупреждение о нехватке памяти

Ошибка:

PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 20480 bytes)

Решение: Увеличьте лимит памяти в wp-config.php:

define('WP_MEMORY_LIMIT', '256M');

Использование плагинов для упрощения работы с WP_DEBUG_LOG

Хотя ручное включение и анализ логов удобно, существуют плагины, которые упрощают работу с отладкой:

  • Debug Bar — добавляет панель в админке с информацией об ошибках и запросах.
  • Query Monitor — показывает ошибки, запросы к базе, PHP-ошибки прямо в админке.
  • WP Log Viewerdebug.log прямо из админки, не заходя на сервер.

Эти инструменты помогут быстро выявлять и фиксировать проблемы, особенно на этапе разработки.

Как защитить debug.log на продакшене

Файл debug.log содержит техническую информацию, потенциально полезную злоумышленникам. Чтобы защитить его:

  • Запретите прямой доступ через .htaccess в Apache, добавив:
<Files debug.log>
    Order allow,deny
    Deny from all
</Files>
  • Или настройте правила в Nginx для блокировки доступа к файлу.
  • Регулярно очищайте или архивируйте лог, чтобы не накапливались большие объёмы данных.

Создание собственной функции для удобной записи в debug.log

Для удобства можно создать функцию в файле темы или плагина для логирования произвольных данных:

function wpdebug_log($message) {
    if (defined('WP_DEBUG') && WP_DEBUG === true) {
        if (is_array($message) || is_object($message)) {
            error_log(print_r($message, true));
        } else {
            error_log($message);
        }
    }
}

Использование:

wpdebug_log('Произошло событие X');
wpdebug_log($some_array);

Это помогает отлаживать сложные процессы и видеть нужные данные в debug.log.

Заключение

WP_DEBUG_LOG — мощный инструмент для детальной отладки WordPress. Правильная настройка и регулярный анализ лога позволяют быстро находить и устранять ошибки, повышая стабильность сайта. Используйте плагины для удобства и не забывайте защищать лог от посторонних.

Для расширенной оптимизации и контроля рекомендую обратить внимание на плагин Clearfy Pro, который помогает управлять логами, а также улучшать безопасность и производительность WordPress.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее