В моем .env
файле я указал, что среда моего приложения - это dev, а debug - как true:
APP_ENV=dev
APP_DEBUG=true
В моем config/packages/dev/web_profiler.yaml
файле у меня есть следующее:
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
Маршрутизация внутри config/routes/dev/web_profiler.yaml
выглядит нормально:
web_profiler_wdt:
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
prefix: /_wdt
web_profiler_profiler:
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
prefix: /_profiler
Поэтому, когда я запускаю сервер, symfony server:start
все в порядке, но профилировщик не появляется. Я что-то пропустил, чтобы включить эту функцию в Symfony?
Чтобы уточнить, страница выводит правильную HTML-страницу с соответствующим содержанием. Просто профиль не отображается.
Мой базовый шаблон веточки:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>{% block title %} {% endblock %}</title>
{{ encore_entry_script_tags('base') }}
<link rel="icon" type="image/x-icon" href="{{ asset('build/images/favicon.ico') }}" />
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,500|Playfair+Display:400,700&display=swap" rel="stylesheet">
{{ encore_entry_link_tags("base") }}
{% block stylesheet %}{% endblock %}
</head>
<body {% if app.request.get('_route') == 'home' %} class='homepage' {% endif %} >
<header>
<div id='top-navigation' class='padding-lg__left-md padding-lg__right-md padding-lg__top-sm padding-lg__bottom-sm row row__align-center row__justify-start'>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Our Mission</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Our Team</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Where the Money Goes</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Community Leadership</span>
<span class='text-color__white text-size__small text-weight__bold'>Policies</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__left-auto icon-set'> <span class='icon size__small color__white margin-lg__right-xsm'>{{ source('@public_path'~asset('build/images/icons/feedback.svg')) }}</span>Submit Feedback</span>
</div>
<nav class="padding-lg__top-md padding-lg__bottom-md padding-lg__left-md padding-lg__right-md row row__align-center row__justify-start {% if app.request.get('_route') == 'home' %} homepage {% endif %}">
<div id='logo'>
<a href="{{ url('home') }}">
<img src="{{ asset('build/images/logo_placeholder.png') }}" alt="logo">
</a>
</div>
{% if app.request.get('_route') == 'creator-register' %}
{% else %}
{% if not is_granted('IS_AUTHENTICATED_FULLY') %}
<div class='margin-lg__left-auto'>
<a href="{{ url('login') }}">
<div class='icon-set'>
<span class='icon margin-lg__right-xsm'>
{{ source('@public_path'~asset('build/images/icons/user.svg')) }}
</span>
<span class='nav-item'>Login</span>
</div>
</a>
</div>
{% endif %}
{% endif %}
</nav>
</header>
{% if app.request.get('_route') != 'home' %} <div class='container is_top'> {% endif %}
{% block body %} {% endblock %}
{% if app.request.get('_route') != 'home' %} </div> {% endif %}
</body>
</html>
Брандмауэр Security.yaml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
guard:
authenticators:
- App\Security\LoginFormAuthenticator
logout:
path : logout
remember_me:
secret: '%kernel.secret%'
lifetime: 2592000 #<- 30 days in seconds - defaults to one year if you take this out!
Результаты по php bin/console debug:router | grep _profiler
:
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler_open_file ANY ANY ANY /_profiler/open
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
Наконец контроллер домашней страницы:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class HomepageController extends AbstractController{
/**
* @Route("/", name="home")
*/
public function output(){
return $this->render('homepage/home.html.twig',[
'title' => 'yo',
]);
}
}
?>
Добавлен public / index.php:
<?php
use App\Kernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;
require dirname(__DIR__).'/config/bootstrap.php';
if ($_SERVER['APP_DEBUG']) {
umask(0000);
Debug::enable();
}
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
Request::setTrustedHosts([$trustedHosts]);
}
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
bin/console debug:event-dispatcher kernel.response
с приоритетом -128WebDebugToolbarListener::onKernelResponse
. если это не так, проверьте config / bundles.php, который должен содержать WebProfilerBundle. Да.true
?WebDebugToolbarListener.php
. В строке 109 добавьте это перед оператором return:echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();
и сообщите об этом.Ответы:
Очень трудно, если не невозможно, отладить это для вас удаленно. Точная проблема связана с чем-то конкретным в вашей локальной настройке, и у кого-то, не имеющего доступа к вашему проекту, не будет возможности точно понять, что не так.
Некоторые общие и конкретные советы по устранению неполадок в вашей ситуации:
Первый. Переустановите пакет профилировщика
В то время как необычный, установка могла быть сорвана. Убедитесь, что с вашим профилировщиком все в порядке.
Сначала удалите его (
composer remove profiler
), а затем установите его снова:)composer require --dev profiler
.Второй. Проверьте конфигурацию
Используйте команду консоли Symfony для проверки вашей конфигурации.
Сначала для встроенного профилировщика:
Который должен вернуть что-то вроде этого:
А затем для панели инструментов профилировщика:
Который должен вернуть что-то вроде:
Третий. Проверьте контейнер
Проверьте, как будет создан экземпляр службы Profiler:
Ожидайте что-то вроде этого:
И затем для web_toolbar:
Для чего-то вроде этого:
(Обратите внимание
2
, что включает панель инструментов).Четвёртый. Проверьте диспетчер событий.
Панель инструментов веб-отладки внедряется во время
kernel.response
события. Убедитесь, что обратный вызов правильно подключен:Который вернет что-то вроде этого:
Элемент уведомления
#7
, который является сборщиком профилировщика (который, помимо прочего, будет включатьX-Debug-Token
заголовок в ответе, который позже будет проверен панелью инструментов веб-отладки, которая является элементом#8
в приведенном выше листинге.Если любая из вышеперечисленных проверок не проходит
Вы должны сосредоточиться на этой конкретной части, чтобы выяснить, почему она терпит неудачу. Может быть, какой-то другой пакет мешает? Проблема с одним из файлов конфигурации?
Все проверяется
... но все еще не работает? Ну, это странно. Убедитесь, что в вашем возвращенном шаблоне есть
</body>
тег и что возвращаемый ответ имеетtext/html
тип содержимого. Но если все вышеперечисленное подтвердится ... это должно сработать.В комментарии вы говорите, что
framework.profiler.collect
установлено значение false при выполнении этих проверок.Установите значение true, изменив
config/packages/dev/web_profiler.yaml
это так:источник
debug:config framework profiler
вернулсяcollect: false
framework.profiler.collect
так, чтобы он сказалtrue
.collect : true
если я правильно помню? Это новое?