W moim .env
pliku określiłem środowisko aplikacji jako dev i debuguj, aby było prawdziwe:
APP_ENV=dev
APP_DEBUG=true
W moim config/packages/dev/web_profiler.yaml
pliku mam następujące elementy:
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
Trasowanie wewnątrz config/routes/dev/web_profiler.yaml
wydaje się być w porządku:
web_profiler_wdt:
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
prefix: /_wdt
web_profiler_profiler:
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
prefix: /_profiler
Więc kiedy uruchamiam serwer ze symfony server:start
wszystkim jest w porządku, ale profiler się nie pojawia. Czy przegapiłem coś, co włącza tę funkcję w Symfony?
Aby to wyjaśnić, strona wyświetla prawidłową stronę HTML o odpowiedniej treści. Po prostu nie pojawia się profiler.
Mój podstawowy szablon gałązki:
<!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 firewall:
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!
Wyniki na 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
Wreszcie kontroler strony głównej:
<?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',
]);
}
}
?>
Dodano 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
tam , gdzie z priorytetem -128 powinien byćWebDebugToolbarListener::onKernelResponse
. jeśli nie, sprawdź config / bundles.php, który powinien zawierać WebProfilerBundle. Tak.true
?WebDebugToolbarListener.php
. W wierszu 109 dodaj to przed instrukcją return:echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();
i zgłoś za to zwrot.Odpowiedzi:
Zdalne debugowanie tego jest bardzo trudne, jeśli nie niemożliwe. Dokładny problem związany jest z czymś konkretnym w twojej lokalnej konfiguracji, a ktoś bez dostępu do twojego projektu nie miałby szansy zobaczyć dokładnie, co jest nie tak.
Kilka ogólnych i szczegółowych porad dotyczących rozwiązywania problemów w Twojej sytuacji:
1. miejsce Ponownie zainstaluj pakiet profilera
Chociaż jest to niezwykłe, instalacja może zostać zepsuta. Upewnij się, że Twój pakiet profilera jest w porządku.
Najpierw usuń go (
composer remove profiler
), a następnie zainstaluj ponownie:)composer require --dev profiler
.2. miejsce Sprawdź konfigurację
Użyj polecenia konsoli Symfony, aby zweryfikować konfigurację.
Najpierw dla wbudowanego profilera:
Który powinien zwrócić coś takiego:
A następnie dla paska narzędzi profilera:
Który powinien zwrócić coś takiego:
3. miejsce Sprawdź pojemnik
Sprawdź, w jaki sposób zostanie utworzona instancja usługi Profiler:
Spodziewaj się czegoś takiego:
A następnie dla web_toolbar:
Dla czegoś takiego:
(Uwaga
2
, który włącza pasek narzędzi).4. miejsce Sprawdź dyspozytora zdarzeń.
Pasek narzędzi debugowania internetowego jest wstrzykiwany podczas
kernel.response
zdarzenia. Sprawdź, czy połączenie zwrotne jest odpowiednio zaczepione:Który zwróci coś takiego:
Zauważ element
#7
, który jest kolektorem Profiler (który między innymi będzie zawierałX-Debug-Token
nagłówek w odpowiedzi, który zostanie później sprawdzony przez pasek narzędzi do debugowania w sieci Web, który jest elementem#8
na powyższej liście.Jeśli którakolwiek z powyższych kontroli zakończy się niepowodzeniem
Musisz skoncentrować się na tej konkretnej części, aby dowiedzieć się, dlaczego nie działa. Może przeszkadza jakiś inny pakiet? Problem z jednym z plików konfiguracyjnych?
Wszystko się sprawdza
... ale nadal nie działa? To dziwne. Upewnij się, że zwrócony szablon ma
</body>
tag, a zwrócona odpowiedź matext/html
typ zawartości. Ale jeśli wszystkie powyższe rzeczy się sprawdzą ... to powinno działać.W komentarzu mówisz, że
framework.profiler.collect
jest ustawiony na false podczas wykonywania tych kontroli.Ustaw to na prawdę, zmieniając w
config/packages/dev/web_profiler.yaml
następujący sposób:źródło
debug:config framework profiler
collect: false
framework.profiler.collect
, która mówitrue
.collect : true
jeśli dobrze pamiętam? Czy to jest nowe