Публичная отладка
AVE Public Debug — защищённая панель диагностики публичного сайта. Она добавляется к завершённой HTML-странице и показывает данные только разрешённому пользователю, не меняя контент для обычного посетителя.
Кнопка AVE размещается в верхней части публичной страницы. В свёрнутом виде она показывает время ответа, количество SQL-запросов, память и число ошибок.
Вкладки
| Вкладка | Что показывает |
|---|---|
| Обзор | HTTP-статус, длительность, память, SQL, активные пользователи и public-модули. |
| Документ | ID, рубрика, шаблон, публикация, alias и основные данные текущего документа. |
| Данные | Собственные структурированные значения из Debug::panel(). |
| Timeline | Этапы формирования публичного ответа и их длительность. |
| SQL | Запросы, время выполнения и место вызова. |
| Кеш | События чтения и записи кеша текущего запроса. |
| HTTP | GET, POST, cookie и заголовки с маскированием секретных ключей. |
| Session | Системная и публичная авторизация, данные PHP-сессии. |
| Ошибки | PHP warning, notice и другие перехваченные ошибки текущего запроса. |
| Хуки | Вызванные события, обработчики, priority, длительность и исключения. |
| Элементы | Документы, блоки, запросы, навигации и модульные теги, из которых собрана страница. |
| Файлы | PHP-файлы, подключённые в текущем запросе. |
Развёрнутая панель блокирует прокрутку страницы. Активная вкладка запоминается
в sessionStorage; Escape или кнопка закрытия возвращают на страницу.
Перемещение панели
На большом экране панель можно перетащить за свободную область её верхней шапки. Положение сохраняется только в текущей вкладке браузера и автоматически ограничивается границами экрана. Кнопка со стрелкой в шапке возвращает панель в исходное положение.
Перетаскивание не запускается с кнопок, вкладок, ссылок, полей и кода. На мобильном экране панель занимает доступную область и не перетаскивается.
Из чего собрана страница
Вкладка Элементы показывает управляемые сущности в порядке их фактического вывода:
- текущий документ;
- блоки;
- запросы;
- навигации;
- результаты тегов установленных public-модулей.
Кнопка Показать на странице включает визуальный режим. Инспектор обводит каждую найденную область, не добавляя обёрток в HTML сайта:
| Тип | Цвет |
|---|---|
| Документ | зелёный |
| Блок | синий |
| Запрос | фиолетовый |
| Навигация | оранжевый |
| Модуль | бирюзовый |
Нажатие Найти прокручивает страницу к выбранному элементу. Кнопка Редактировать открывает соответствующий раздел панели управления в новой вкладке. Если известен исходный тег, его можно скопировать отдельной кнопкой.
Один логический элемент иногда выводится в нескольких местах, например в desktop- и mobile-контейнерах темы. В списке он остаётся одной записью, а рамка появляется у каждой его видимой области. Элемент без безопасной HTML-области остаётся в списке с отметкой Нет области.
Слайдеры и другие скрипты могут перестраивать HTML после загрузки. В debug-режиме
инспектор заранее ставит на корневые элементы технические data-*-якоря, поэтому
подсветка сохраняется и после клонирования карточек. Эти атрибуты не выдаются
обычным посетителям.
Для защищённого запроса с активным инспектором движок не использует полный кеш страницы и кеш готовых элементов запроса. Это нужно только администратору, чтобы увидеть настоящий состав текущего ответа; обычные посетители продолжают получать закешированные страницы и карточки.
Включение
Публичная отладка настраивается в configs/public.config.php:
'debug' => array(
'enabled' => true,
'groups' => array(),
),
enabled— общий выключатель. Приfalseпанель недоступна даже администратору.groups— ID публичных групп пользователей, которым разрешён Debug Toolbar без системного права.- пустой
groupsоставляет доступ только системным пользователям с правомview_public_debug.
Для администратора рекомендуемый вариант — пустой groups и право
Публичная панель отладки в настройках роли. После входа в панель управления
перейдите
на сайт в том же браузере: общая системная авторизация позволит панели проверить
это право.
Публичные группы добавляйте только для доверенных сотрудников. Обычный зарегистрированный посетитель не должен получить доступ к SQL, session и структуре документов.
Собственные значения
Для вывода значения в отдельной вкладке используйте только Debug::panel():
use App\Helpers\Debug;
Debug::panel($document, 'Документ после обработки');
Debug::panel($filters, 'Нормализованные фильтры');
Debug::panel($result, 'Ответ внешнего сервиса');
Откройте панель AVE → Данные. Для каждой записи будут показаны:
- переданная подпись;
- тип значения;
- относительный путь файла и строка вызова;
- дерево массива или публичных свойств объекта.
Подробные варианты использования и ограничения находятся на странице Собственные вызовы Debug.
Когда панель не появляется
- Проверьте
debug.enabledвconfigs/public.config.php. - Проверьте право
view_public_debugтекущей системной роли или ID публичной группы вdebug.groups. - Убедитесь, что вход в панель управления выполнен в том же браузере и на том же домене.
- Проверьте, что ответ является полной HTML-страницей и содержит
</body>. - Панель намеренно не добавляется в Ajax, JSON, XML, скачиваемые файлы и режим
ONLYCONTENT. - Прямой маршрут модуля, который сам завершил ответ без общего page shell, также должен предоставить собственную диагностику или использовать отложенную страницу.
- При fatal error до финального рендера панель может не успеть встроиться; используйте системный журнал ошибок.
- Визуальный инспектор работает только для управляемого HTML в
body. Содержимое атрибутов,head, JavaScript, CSS, JSON и текстовых редакторов намеренно не обводится.
Безопасность
Toolbar рекурсивно маскирует ключи, похожие на password, secret, token,
csrf, auth, cookie, api_key и session ID. Это дополнительная защита, а
не разрешение передавать секреты в отладчик.
Не отправляйте в Debug::panel() токен простой строкой: у scalar нет имени
ключа, по которому его можно распознать. Передавайте только безопасные данные
или заранее заменяйте секрет значением ***.
На production держите groups пустым и выдавайте view_public_debug только
техническим ролям. После диагностики удаляйте временные вызовы, которые создают
шум или обрабатывают большие объёмы данных.