No meu .env
arquivo, especifiquei meu ambiente de aplicativo como dev e depuração como true:
APP_ENV=dev
APP_DEBUG=true
No meu config/packages/dev/web_profiler.yaml
arquivo, tenho o seguinte:
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
O roteamento interno config/routes/dev/web_profiler.yaml
parece estar bem:
web_profiler_wdt:
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
prefix: /_wdt
web_profiler_profiler:
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
prefix: /_profiler
Então, quando eu executo o servidor, symfony server:start
tudo está bem, mas o criador de perfil não aparece. Perdi algo que habilita esse recurso no Symfony?
Para esclarecer, a página está produzindo uma página HTML adequada com o conteúdo apropriado. Simplesmente não há perfilador aparecendo.
Meu modelo básico de galho:
<!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 em 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 fim, o controlador da página inicial:
<?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 adicionado:
<?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
onde com prioridade -128 deve haver oWebDebugToolbarListener::onKernelResponse
. caso contrário, verifique o arquivo config / bundles.php, que deve conter WebProfilerBundle. sim.true
?WebDebugToolbarListener.php
. Na linha 109, adicione isso antes da declaração de retorno:echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();
e relate o retorno para isso.Respostas:
É muito difícil, se não impossível, depurar isso remotamente para você. O problema exato está relacionado a algo específico na sua configuração local e alguém sem acesso ao seu projeto não teria a chance de ver exatamente o que está errado.
Alguns conselhos gerais e específicos para solução de problemas para sua situação:
1º. Reinstale o pacote do profiler
Embora incomum, a instalação pode ser interrompida. Verifique se o seu pacote do profiler está correto.
Primeiro remova-o (
composer remove profiler
) e, em seguida, instale-o novamentecomposer require --dev profiler
:).2nd. Verifique a configuração
Use o comando do console do Symfony para verificar sua configuração.
Primeiro para o criador de perfil incorporado:
O que deve retornar algo como isto:
E então para a barra de ferramentas do criador de perfil:
O que deve retornar algo como:
3rd. Verifique o contêiner
Verifique como o serviço Profiler será instanciado:
Espere algo como isto:
E então para a web_toolbar:
Para algo assim:
(Observe o
2
que habilita a barra de ferramentas).4th. Verifique o distribuidor de eventos.
A barra de ferramentas de depuração da web é injetada durante o
kernel.response
evento. Verifique se o retorno de chamada está conectado corretamente:O que retornará algo como isto:
Item de aviso
#7
, que é o coletor do Profiler (que, entre outras coisas, incluirá oX-Debug-Token
cabeçalho na resposta, que será posteriormente verificado pela barra de ferramentas de depuração da Web, item#8
da lista acima.Se alguma das verificações acima falhar
Você precisará se concentrar nessa parte específica para descobrir por que está falhando. Talvez algum outro pacote esteja interferindo? Um problema com um dos arquivos de configuração?
Tudo dá uma olhada
... mas ainda não está funcionando? Bem, isso é estranho. Verifique se o modelo retornado possui uma
</body>
tag e se a resposta retornada possuitext/html
um tipo de conteúdo. Mas se todas as opções acima derem uma olhada ... deve funcionar.Em um comentário, você diz que
framework.profiler.collect
está definido como falso ao executar essas verificações.Defina-o como true alterando
config/packages/dev/web_profiler.yaml
assim:fonte
debug:config framework profiler
retornadocollect: false
framework.profiler.collect
que está escritotrue
.collect : true
se me lembro corretamente? Isso é novo?