Очень трудно, если не невозможно, отладить это для вас удаленно. Точная проблема связана с чем-то конкретным в вашей локальной установке, и у кого-то, не имеющего доступа к вашему проекту, не будет возможности точно понять, что не так.
Некоторые общие и конкретные рекомендации по устранению неполадок для вашей ситуации:
1й. Переустановите пакет профилировщика
Хотя это необычно, установка может быть затруднена. Убедитесь, что с вашим профилировщиком все в порядке.
Сначала удалите его (composer remove profiler
), а затем установите снова: composer require --dev profiler
).
2nd. Проверьте конфигурацию
Используйте команду консоли Symfony для проверки вашей конфигурации.
Сначала для встроенного профилировщика:
$ bin/console debug:config framework profiler
Что должно возвращать что-то вроде этого:
Current configuration for "framework.profiler"
==============================================
only_exceptions: false
enabled: true
collect: true
only_master_requests: false
dsn: 'file:%kernel.cache_dir%/profiler'
А затем для панели инструментов профилировщика:
$ bin/console debug:config web_profiler
Что должно возвращать что-то вроде:
Current configuration for extension with alias "web_profiler"
=============================================================
web_profiler:
toolbar: true
intercept_redirects: false
excluded_ajax_paths: '^/((index|app(_[\w]+)?)\.php/)?_wdt'
3rd. Проверьте контейнер
Проверьте, как будет создан экземпляр службы Profiler:
$ bin/console debug:container profiler --show-arguments
Ожидайте что-то вроде этого:
Information for Service "profiler"
==================================
Profiler.
---------------- -------------------------------------------------------------------------------------
Option Value
---------------- -------------------------------------------------------------------------------------
Service ID profiler
Class Symfony\Component\HttpKernel\Profiler\Profiler
Tags monolog.logger (channel: profiler)
kernel.reset (method: reset)
Calls add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add
Public yes
Synthetic no
Lazy no
Shared yes
Abstract no
Autowired no
Autoconfigured no
Arguments Service(profiler.storage)
Service(monolog.logger.profiler)
1
---------------- -------------------------------------------------------------------------------------
А затем для web_toolbar:
# bin/console debug:container web_profiler.debug_toolbar --show-arguments
Примерно так:
Information for Service "web_profiler.debug_toolbar"
====================================================
WebDebugToolbarListener injects the Web Debug Toolbar.
---------------- ------------------------------------------------------------------------
Option Value
---------------- ------------------------------------------------------------------------
Service ID web_profiler.debug_toolbar
Class Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener
Tags kernel.event_subscriber
container.hot_path
Public no
Synthetic no
Lazy no
Shared yes
Abstract no
Autowired no
Autoconfigured no
Arguments Service(twig)
2
Service(router.default)
^/((index|app(_[\w]+)?)\.php/)?_wdt
Service(web_profiler.csp.handler)
---------------- ------------------------------------------------------------------------
(обратите внимание на 2
, который включает панель инструментов).
4th. Проверьте диспетчер событий.
Веб-панель инструментов отладки внедряется во время события kernel.response
. Проверьте, правильно ли перехвачен обратный вызов:
$ bin/console debug:event-dispatcher kernel.response
, который вернет что-то вроде этого:
Registered Listeners for "kernel.response" Event
================================================
------- -------------------------------------------------------------------------------------------- ----------
Order Callable Priority
------- -------------------------------------------------------------------------------------------- ----------
#1 ApiPlatform\Core\Hydra\EventListener\AddLinkHeaderListener::onKernelResponse() 0
#2 Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse() 0
#3 Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse() 0
#4 Symfony\Component\WebLink\EventListener\AddLinkHeaderListener::onKernelResponse() 0
#5 Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse() 0
#6 ApiPlatform\Core\HttpCache\EventListener\AddHeadersListener::onKernelResponse() -1
#7 Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse() -100
#8 Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse() -128
#9 Symfony\Component\HttpKernel\EventListener\TestSessionListener::onKernelResponse() -128
#10 Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener::onResponse() -255
#11 Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse() -1000
#12 Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse() -1024
------- -------------------------------------------------------------------------------------------- ----------
Обратите внимание на элемент #7
, который является сборщиком профилировщика (который, среди прочего, будетвключите заголовок X-Debug-Token
в ответ, который позже будет проверен веб-панелью отладки, которая в приведенном выше листинге представляет собой элемент #8
.
Если любая из вышеуказанных проверок завершится неудачно
Вам нужно будет сосредоточиться на этой конкретной части, чтобы выяснить , почему она выходит из строя. Может быть, какой-то другой пакет мешает? Проблема с одним из файлов конфигурации?
Все проверяется
... но все еще не работает? Ну, это странно. Убедитесь, что ваш возвращенный шаблон имеет тег </body>
, и что возвращенный ответ имеет тип содержимого text/html
. Но если все вышеперечисленноепроверяет ... это должно работать.
В комментарии вы говорите, что framework.profiler.collect
имеет значение false при выполнении этих проверок.
Установите егов true, изменив config/packages/dev/web_profiler.yaml
, как это:
framework:
profiler:
only_exceptions: false
collect: true