Диагностика проблемы с отладчиком WordPress
Отладка в WordPress осуществляется через константы WP_DEBUG, WP_DEBUG_LOG и WP_DEBUG_DISPLAY в файле wp-config.php. Если включить отладчик, а ошибки не отображаются или не записываются в лог, это указывает на некорректную настройку или конфликт с серверными параметрами.
Проверяем текущее состояние отладчика:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); // ошибки пишутся в файл, но не выводятся на экран
Для диагностики важно проверить, существует ли файл wp-content/debug.log и не заполнен ли он ошибками. Если файл отсутствует или пуст, значит лог не записывается.
Пошаговое решение проблемы с неработающим отладчиком
1. Правильная настройка wp-config.php
Убедитесь, что все константы определены правильно и до строки /* That's all, stop editing! */:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
Наличие @ini_set('display_errors', 0); гарантирует, что ошибки не выводятся на экран, если это нежелательно, но логируются.
2. Проверка прав на папку wp-content
Файлы логов создаются в папке wp-content. Серверу должна быть предоставлена возможность записи в эту папку. Проверить и исправить права можно через SSH:
cd /path/to/wordpress/wp-content
chmod 755 .
chmod 644 debug.log
Если файла debug.log нет, попробуйте создать пустой файл и установить права 644.
3. Отключение конфликтующих плагинов и тем
Плагины кеширования или безопасности иногда блокируют запись логов или вывод ошибок. Временно отключите плагины кеширования (например, WP Super Cache, W3 Total Cache) и активируйте стандартную тему (например, Twenty Twenty-Three).
4. Настройка PHP error_log
Проверьте настройки PHP, которые могут влиять на логирование ошибок. В php.ini должны быть такие параметры:
error_reporting = E_ALL
log_errors = On
error_log = /path/to/php-error.log
Если PHP error_log не настроен или указывает в недоступное место, WordPress не сможет записать ошибки.
Проверка результата после внедрения
Чтобы проверить, работает ли отладчик, создайте намеренно ошибочный код, например, добавьте в functions.php темы:
function test_debug() {
undefined_function_call(); // вызов несуществующей функции
}
add_action('wp_footer', 'test_debug');
После загрузки любой страницы сайта файл wp-content/debug.log должен содержать запись об ошибке.
Если WP_DEBUG_DISPLAY установлено в true, ошибка покажется на странице. Если false — в логе.
Частые ошибки и как их исправить
- Ошибка: Отсутствует файл
debug.logи ошибки не записываются.
Решение: Создайте файл вручную с правами 644, убедитесь, что папкаwp-contentдоступна на запись. - Ошибка: Ошибки не выводятся и не пишутся, хотя
WP_DEBUGвключен.
Решение: Проверьте, что константы определены до строки/* That's all, stop editing! */и нет конфликтующих настроек PHP. - Ошибка: Плагины кеширования скрывают ошибки.
Решение: Отключите кеш-плагины и проверьте вывод снова. - Ошибка: Не работает
@ini_set('display_errors', 0);из-за ограничений хостинга.
Решение: Свяжитесь с поддержкой хостера или настройте error_reporting черезphp.iniили.user.ini.
Практические советы по безопасности и производительности
- Не включайте
WP_DEBUG_DISPLAYна живом сайте — это раскрывает внутренние ошибки пользователям. - Регулярно очищайте
debug.log, чтобы избежать переполнения диска. - Для длительной отладки используйте отдельный файл лога, не выводя ошибки на экран.
- В продакшене лучше отключить
WP_DEBUG, чтобы не замедлять сайт лишними операциями.
Сравнение способов отладки в WordPress
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| WP_DEBUG + WP_DEBUG_LOG | Удобно для записи ошибок в файл, не мешает пользователям | Нужно контролировать размер лога | Отладка на тестовом и продакшн сайтах |
| WP_DEBUG_DISPLAY = true | Ошибки видны сразу на странице | Раскрывает ошибки посетителям, небезопасно | Локальная разработка |
| Плагины для отладки (Query Monitor) | Дает расширенную информацию и удобный интерфейс | Может замедлять сайт, не всегда совместим с кешем | Разработка и тестирование |