Files
ave-cms/help/debug
2026-07-27 12:58:44 +03:00
..
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00

Публичная отладка

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.

Когда панель не появляется

  1. Проверьте debug.enabled в configs/public.config.php.
  2. Проверьте право view_public_debug текущей системной роли или ID публичной группы в debug.groups.
  3. Убедитесь, что вход в панель управления выполнен в том же браузере и на том же домене.
  4. Проверьте, что ответ является полной HTML-страницей и содержит </body>.
  5. Панель намеренно не добавляется в Ajax, JSON, XML, скачиваемые файлы и режим ONLYCONTENT.
  6. Прямой маршрут модуля, который сам завершил ответ без общего page shell, также должен предоставить собственную диагностику или использовать отложенную страницу.
  7. При fatal error до финального рендера панель может не успеть встроиться; используйте системный журнал ошибок.
  8. Визуальный инспектор работает только для управляемого 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 только техническим ролям. После диагностики удаляйте временные вызовы, которые создают шум или обрабатывают большие объёмы данных.