En mi .env
archivo, he especificado que el entorno de mi aplicación sea dev y debug para que sea verdadero así:
APP_ENV=dev
APP_DEBUG=true
En mi config/packages/dev/web_profiler.yaml
archivo tengo lo siguiente:
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
La ruta interna config/routes/dev/web_profiler.yaml
parece estar 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
Entonces, cuando ejecuto el servidor con symfony server:start
todo está bien, pero el generador de perfiles no aparece. ¿Me perdí algo que habilita esa función dentro de Symfony?
Para aclarar, la página está generando una página HTML adecuada con el contenido apropiado. Simplemente no aparece el generador de perfiles.
Mi plantilla base de ramita:
<!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>
Firewall 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!
Resultados en 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
Por último controlador de la página de inicio:
<?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 agregado:
<?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
donde con -128 prioridad debe haberWebDebugToolbarListener::onKernelResponse
. si no es así, verifique config / bundles.php, que debería contener WebProfilerBundle. Si.true
?WebDebugToolbarListener.php
. En la línea 109 agregue esto antes de la declaración de devolución:echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();
e informe la devolución de eso.Respuestas:
Es muy difícil, si no imposible, depurar esto remotamente. El problema exacto está relacionado con algo específico en su configuración local, y alguien sin acceso a su proyecto no tendría la oportunidad de ver exactamente qué está mal.
Algunos consejos generales y específicos de solución de problemas para su situación:
1er. Vuelva a instalar el paquete del generador de perfiles
Si bien es inusual, la instalación podría ser descorchada. Asegúrese de que su paquete de perfiladores esté bien.
Primero quítelo (
composer remove profiler
), y luego instálelo nuevamente:)composer require --dev profiler
.2do. Comprueba la configuración
Use el comando de consola de Symfony para verificar su configuración.
Primero para el perfilador incorporado:
Lo que debería devolver algo como esto:
Y luego para la barra de herramientas del generador de perfiles:
Que debería devolver algo como:
3er. Revisa el contenedor
Compruebe cómo se instanciará el servicio Profiler:
Espera algo como esto:
Y luego para el web_toolbar:
Por algo como esto:
(Nota la
2
que, que habilita la barra de herramientas).4to. Verifique el despachador de eventos.
La barra de herramientas de depuración web se inyecta durante el
kernel.response
evento. Verifique que la devolución de llamada esté correctamente enganchada:Lo que devolverá algo como esto:
Notifique el elemento
#7
, que es el recopilador Profiler (que, entre otras cosas, incluirá elX-Debug-Token
encabezado en la respuesta, que luego será verificado por la Barra de herramientas de depuración web, que es el elemento#8
en la lista anterior.Si alguno de los controles anteriores falla
Tendrás que concentrarte en esa parte específica para descubrir por qué está fallando. ¿Quizás algún otro paquete interfiere? ¿Un problema con uno de los archivos de configuración?
Todo sale
... pero aún no funciona? Bueno, eso es raro. Asegúrese de que su plantilla devuelta tenga una
</body>
etiqueta y que la respuesta devuelta tengatext/html
contenido. Pero si todo lo anterior se verifica ... debería funcionar.En un comentario dices que
framework.profiler.collect
se establece en falso al realizar estas comprobaciones.Póngalo en verdadero cambiando
config/packages/dev/web_profiler.yaml
así:fuente
debug:config framework profiler
regresócollect: false
framework.profiler.collect
lo que dicetrue
.collect : true
si recuerdo correctamente? ¿Es esto nuevo?