Режим отладки в 1С-Битрикс — это не одна галочка, а набор независимых настроек: вывод ошибок PHP, журнал SQL-запросов, отладка событий, таймер производительности. Разберём, что реально показывает каждая из них и почему включать всё сразу на боевом сайте не стоит.
Вывод ошибок PHP
Базовая настройка находится в /bitrix/.settings.php,
в секции exception_handling. Параметр debug
со значением true включает подробный вывод ошибок
прямо на странице:
<?php
return [
'exception_handling' => [
'value' => [
'debug' => true,
'log' => [
'settings' => ['file' => 'bitrix/modules/error.log'],
],
],
],
];
На боевом сайте эту настройку держат выключенной: текст ошибки PHP раскрывает пути на сервере и структуру проекта посетителям, а это прямая подсказка для потенциальной атаки. Включать её нужно точечно на время отладки и обязательно выключать после.
Журнал ошибок без вывода на экран
Правильная практика для боевого сайта — писать ошибки в лог, а не
показывать их. Параметр log в том же блоке настроек
задаёт файл, куда пишутся все зафиксированные ошибки, независимо
от того, включён визуальный вывод или нет.
Нужна помощь с Битрикс?
Отладка SQL-запросов
<?php
define('DBDebug', true);
define('DBDebugToFile', true);
Константы задаются в /bitrix/php_interface/dbconn.php.
При включении система пишет все выполненные SQL-запросы в отдельный
лог, что позволяет увидеть, какие именно запросы делает страница
и сколько времени они занимают, — полезно при поиске узкого места
в производительности.
Держать эту настройку включённой постоянно нельзя: лог растёт очень быстро на посещаемом сайте и сам по себе создаёт нагрузку на диск и на скорость записи.
Отладка обработчиков событий
Специального переключателя для отладки конкретно событий в ядре нет — отслеживание построено на ручном логировании внутри самих обработчиков:
<?php
AddEventHandler('main', 'OnBeforeUserAdd', function (&$arFields) {
\Bitrix\Main\Diag\Debug::writeToFile(
$arFields,
'OnBeforeUserAdd',
'/local/logs/events.log'
);
return true;
});
Такой подход универсален: работает для любого события, не требует глобальных настроек и легко убирается после того, как отладка завершена.
Панель отладки для разработчика
В административной части предусмотрена панель, показывающая время генерации страницы и количество запросов к базе прямо во время просмотра сайта под администратором. Она полезна для быстрой оценки, но для детального анализа конкретной страницы больше подходит монитор производительности — он даёт разбивку по компонентам, а не только общую цифру.
Что смотреть при разных типах проблем
| Проблема | Что включить |
|---|---|
| Белый экран, фатальная ошибка | debug => true в настройках или лог ошибок |
| Страница медленная | Отладка SQL-запросов или монитор производительности |
| Обработчик события не срабатывает | Ручное логирование внутри обработчика |
| Неясно, откуда приходят данные | Вывод переменных в лог в конкретном месте кода |
Отладка на боевом сайте без риска
Если отладка нужна прямо на рабочем сайте, а не на тестовой копии, разумно ограничить область: включить вывод ошибок или лог SQL только для собственного IP-адреса, а не для всех посетителей. Это можно организовать проверкой адреса в начале скрипта перед включением соответствующих констант.
Частые ошибки
- Вывод ошибок остаётся включённым после отладки. Посетители видят технические детали устройства сайта.
- Отладка SQL включена постоянно на посещаемом сайте. Лог растёт бесконтрольно и создаёт дополнительную нагрузку.
- Логирование не убирается из кода после решения проблемы. Со временем в проекте накапливается множество забытых отладочных записей.
- Отладка включается сразу на боевом сайте без тестового окружения. Риск временно показать чувствительную информацию посетителям.
Итог
Режим отладки в Битрикс — это набор независимых инструментов: вывод ошибок PHP, лог ошибок без вывода на экран, журнал SQL-запросов и ручное логирование внутри кода. Каждый включается для конкретной задачи и обязательно выключается после того, как проблема найдена, — постоянно включённая отладка на боевом сайте создаёт и риски безопасности, и лишнюю нагрузку.
