Dans mon .env
fichier, j'ai spécifié que mon environnement d'application doit être dev et debug être vrai comme ceci:
APP_ENV=dev
APP_DEBUG=true
Dans mon config/packages/dev/web_profiler.yaml
dossier, j'ai les éléments suivants:
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
Le routage à l'intérieur config/routes/dev/web_profiler.yaml
semble bien:
web_profiler_wdt:
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
prefix: /_wdt
web_profiler_profiler:
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
prefix: /_profiler
Donc, quand je lance le serveur avec symfony server:start
tout va bien, mais le profileur n'apparaît pas. Ai-je raté quelque chose qui active cette fonctionnalité dans Symfony?
Pour clarifier, la page génère une page HTML appropriée avec le contenu approprié. Aucun profileur n'apparaît.
Mon modèle de brindille de base:
<!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>
Pare-feu 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!
Résultats sur 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
Enfin contrôleur de page d'accueil:
<?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',
]);
}
}
?>
Ajout de 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
là où avec la priorité -128 il devrait y avoir leWebDebugToolbarListener::onKernelResponse
. si ce n'est pas le cas, vérifiez config / bundles.php, qui devrait contenir WebProfilerBundle. Ouais.true
?WebDebugToolbarListener.php
. À la ligne 109, ajoutez ceci avant la déclaration de retour:echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();
et déclarez le retour pour cela.Réponses:
Il est très difficile, voire impossible, de déboguer cela à distance. Le problème exact est lié à quelque chose de spécifique dans votre configuration locale, et une personne n'ayant pas accès à votre projet n'aurait pas la chance de voir exactement ce qui ne va pas.
Quelques conseils de dépannage généraux et spécifiques à votre situation:
1er. Réinstallez le pack profileur
Bien qu'inhabituelle, l'installation pourrait être falsifiée. Assurez-vous que votre package de profileur est correct.
Retirez-le d'abord (
composer remove profiler
), puis réinstallez-le:)composer require --dev profiler
.2e. Vérifiez la configuration
Utilisez la commande de console de Symfony pour vérifier votre configuration.
Tout d'abord pour le profileur intégré:
Ce qui devrait renvoyer quelque chose comme ceci:
Et puis pour la barre d'outils du profileur:
Qui devrait renvoyer quelque chose comme:
3e. Vérifiez le conteneur
Vérifiez comment le service Profiler sera instancié:
Attendez-vous à quelque chose comme ça:
Et puis pour la web_toolbar:
Pour quelque chose comme ça:
(Notez le
2
, qui active la barre d'outils).4e. Vérifiez le répartiteur d'événements.
La barre d'outils de débogage Web est injectée pendant l'
kernel.response
événement. Vérifiez que le rappel est correctement raccordé:Qui retournera quelque chose comme ça:
Remarquez l'élément
#7
, qui est le collecteur du profileur (qui inclura entre autres l'en-X-Debug-Token
tête dans la réponse, qui sera ensuite vérifié par la barre d'outils de débogage Web, qui est l'élément#8
dans la liste ci-dessus.Si l'une des vérifications ci-dessus échoue
Vous devrez vous concentrer sur cette partie spécifique pour savoir pourquoi elle échoue. Peut-être qu'un autre paquet interfère? Un problème avec l'un des fichiers de configuration?
Tout vérifie
... mais ne fonctionne toujours pas? Eh bien, c'est bizarre. Assurez-vous que votre modèle renvoyé possède une
</body>
balise et que la réponse renvoyée atext/html
un type de contenu. Mais si tout ce qui précède est vérifié ... cela devrait fonctionner.Dans un commentaire, vous dites que la valeur
framework.profiler.collect
est définie sur false lors de l'exécution de ces vérifications.Réglez-le sur true en modifiant
config/packages/dev/web_profiler.yaml
comme ceci:la source
debug:config framework profiler
retournécollect: false
framework.profiler.collect
ce qu'il dittrue
.collect : true
si je me souviens bien? Est-ce nouveau?