Ни один разработчик не может обойтись без инструментов отладки. В Битрикс есть несколько способов посмотреть, что происходит «под капотом», от самых простых до продвинутых.
1. «Золотое правило»: print_r только для админа
Самый быстрый способ посмотреть содержимое переменной — это print_r или var_dump. Но выводить их всем пользователям — плохая практика. Всегда оборачивайте отладочный вывод в проверку на права администратора.codePHP
global $USER;
if ($USER->IsAdmin()) {
echo "<pre>";
print_r($arResult);
echo "</pre>";
}
Этот код покажет содержимое $arResult только вам и не сломает верстку для обычных посетителей.
2. Профессиональное логирование: Debug::writeToFile (D7)
Когда print_r не подходит (например, при отладке AJAX-запросов, агентов или событий), на помощь приходит логирование в файл. В D7 для этого есть класс \Bitrix\Main\Diag\Debug.
Синтаксис: \Bitrix\Main\Diag\Debug::writeToFile($variable, «Заголовок», «путь_к_файлу.log»);
Файл будет создан относительно корня сайта. Если указать только имя файла, он появится в корне.codePHP
use Bitrix\Main\Diag\Debug;
$dataToLog = ['key1' => 'value1', 'key2' => [1,2,3]];
// Запишет содержимое $dataToLog в файл /my_log.log
Debug::writeToFile($dataToLog, "Мои данные", "my_log.log");
Преимущества:
- Не ломает вывод страницы (JSON, HTML и т.д.).
- Работает в любом контексте (cron, ajax, rest).
- Форматирует вывод для лучшей читаемости.
3. Старый способ логирования: AddMessage2Log()
Это аналог Debug::writeToFile из старого API.
Синтаксис: AddMessage2Log(print_r($variable, true), «ID_модуля»);
Логи по умолчанию пишутся в файл /bitrix/modules/main/admin/event_log.php, если не настроено иное.codePHP
$dataToLog = ['key1' => 'value1', 'key2' => [1,2,3]];
AddMessage2Log(print_r($dataToLog, true), "my_debug");
4. Просмотр SQL-запросов
Часто проблема кроется в неверно составленном запросе к БД. Битрикс позволяет увидеть все SQL-запросы, которые выполняются на странице.
- Откройте файл /bitrix/.settings.php.
- Найдите секцию connections -> default.
- Добавьте или измените ключ ‘debug’ => true.
codePHP
// /bitrix/.settings.php
'connections' =>
array (
'value' =>
array (
'default' =>
array (
'host' => 'localhost',
'database' => 'bs_db',
'login' => 'bs_user',
'password' => '...',
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
'debug' => true, // <-- ВОТ ЭТА СТРОКА
),
),
'readonly' => true,
),
Теперь внизу каждой страницы (в административной панели отладки) появится вкладка «SQL Запросы», где будет полный список запросов, время их выполнения и трассировка вызова.
5. Настройка вывода ошибок (Exception Handling)
Для режима разработки полезно видеть ошибки и исключения прямо на экране. Это также настраивается в .settings.php.
- Откройте файл /bitrix/.settings.php.
- Найдите или добавьте секцию exception_handling.
codePHP
// /bitrix/.settings.php
'exception_handling' =>
array (
'value' =>
array (
'debug' => true, // Включаем режим отладки
'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' => null, // Можно настроить логирование
),
'readonly' => false,
),
Главный ключ здесь — ‘debug’ => true. Он заменяет стандартный экран «Произошла ошибка» на детальный отчет об исключении со стеком вызовов. Важно: на боевом сайте этот режим должен быть выключен (‘debug’ => false).
Вывод:
Грамотная отладка экономит часы работы. Используйте IsAdmin() для быстрых проверок, Debug::writeToFile для фоновых процессов, и не забывайте про возможности файла .settings.php для анализа SQL-запросов и детального вывода ошибок на этапе разработки.
отладка Битрикс, логирование, Debug::writeToFile, AddMessage2Log, SQL-запросы, .settings.php, exception_handling, debug.