web-dev-qa-db-fra.com

Symfony 2 - Une erreur s'est produite lors du chargement de la barre d'outils de débogage Web (404: Introuvable).

Depuis la mise à jour de symfony 2.2, la barre d’outils de débogage Web n’est plus chargée dans app_dev.php.

Je reçois l'erreur suivante:

An error occurred while loading the web debug toolbar (404: Not Found).
Do you want to open the profiler?

Dans le prod.log j'obtiens ce qui suit:

request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /_profiler/84fb75cc3ffd5435474ebe4250e01fac2cdf49c1"" at /httpdocs/project/app/cache/prod/classes.php line 3597 [] []

request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /_wdt/452d5b4aa2dd9388285fa1c286d5c54218029c71"" at /httpdocs/priject/app/cache/prod/classes.php line 3597 [] []

J'ai vidé la cache plusieurs fois :)

Fait intéressant, dans /app_dev.php, tous les liens de la page ne sont plus liés à /app_dev.php.

y compris le profil (/_profiler/5fdc27cb82c4e9e426b3ab27377deb0b760fdca2)[.____.¹. lorsque je modifie l’URL manuellement et que j’applique app_dev.php dans l’URL, le profileur se charge correctement.

routing_dev.yml:

_assetic:
    resource: .
    type:     assetic

_wdt:
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
    prefix:   /_wdt

_profiler:
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
    prefix:   /_profiler

_configurator:
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
    prefix:   /_configurator

_main:
    resource: routing.yml

Je vous serais reconnaissant pour toute l'aide apportée.

UPDATE I: config_dev.yml

imports:
    - { resource: config.yml }

framework:
    router:   { resource: "%kernel.root_dir%/config/routing_dev.yml" }
    profiler: { only_exceptions: false }

web_profiler:
    toolbar: true
    intercept_redirects: false

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        firephp:
            type:  firephp
            level: info
        chromephp:
            type:  chromephp
            level: info

assetic:
    use_controller: true

MISE À JOUR II: AppKernel.php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new JMS\AopBundle\JMSAopBundle(),
            new JMS\DiExtraBundle\JMSDiExtraBundle($this),
            new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
            new myProject\MyBundle\myBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new myProject\MyBackendBundle\myBackendBundle(),
       );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}

Mise à jour III: .htaccess

DirectoryIndex app.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteRule .? %{ENV:BASE}app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /app.php/
    </IfModule>
</IfModule>

UPDATE: J'ai trouvé l'erreur, il s'agissait d'une mauvaise (ancienne) balise de rendu dans un modèle. :(

Merci pour votre aide

13
Bol

J'ai eu ce problème aussi, essayez de faire attention à votre .htaccess et faites-le ressembler à ceci:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]    ##### this is the part that you should Tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
    RewriteRule .? %{ENV:BASE}/app_dev.php [L]        ##### this is the part that you should Tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        # When mod_rewrite is not available, we instruct a temporary redirect of
        # the startpage to the front controller explicitly so that the website
        # and the generated links can still be used.
        RedirectMatch 302 ^/$ /app.php/
        # RedirectTemp cannot be used instead
    </IfModule>
</IfModule>
11

Dans Symfony 4 + Flex, je devais installer symfony/Apache-pack recipie

composer req Apache-pack
5
user6863579

J'ai eu ce problème particulier après avoir installé mon application sur une nouvelle machine Linux. Je venais d'oublier d'activer mod_rewrite dans Apache2

[Sudo] a2enmod rewrite
[Sudo] service Apache2 restart

J'espère que ça va aider!

2
Moonchild

Une autre source de cette erreur: mettez à jour le serveur Web Apache sans supprimer le commentaire du module de réécriture. Apprendre en faisant!

1
geoB

J'ai rencontré cette erreur lorsque je modifie le code du fournisseur à des fins de débogage. (Je sais que ce n'est pas la bonne façon mais quoi qu'il en soit .. J'ai apporté des modifications, testé l'application Web et oublié de restaurer le code du fournisseur).

Si c'est votre cas et que vous ne vous rappelez pas exactement où vous avez effectué des modifications "illégales" au code du fournisseur, vous pouvez supprimer le répertoire du fournisseur ou ses composants et exécuter la commande php composer.phar update pour extraire les versions d'origine.

1
Oleksii Zymovets

Pour moi, cela se produit lorsque j'ai changé .htaccess (de Web dir) afin d'appeler app_dev.php au lieu de app.php, mais je ne l'ai pas changé partout dans le fichier .htaccess. Après avoir changé, toutes les apparences apparues en erreur app_dev.php ont disparu.

0
MilanG

vos règles de réécriture en sont probablement la cause. Il y a quelques instants, j'étais en train de réécrire la mienne et j'avais le même problème avec le profileur.

0
Teffi