39 votes

Pourquoi mon installation 404ing de Symfony2 lorsque j'accède à app.php?

Dans Symfony2, lorsque vous accédez à votre application localement via app_dev.php, tout fonctionne correctement. Cependant, lorsque j'accède à app.php 404s:

Oops! Une erreur est survenue

Le serveur a renvoyé un "404 non trouvé".

Quelque chose est cassé. Veuillez nous envoyer un e-mail à [email] et laissez-nous savoir ce que vous faisiez lorsque cette erreur s'est produite. Nous allons le réparer dès que possible. Désolé pour

22voto

Nemanja Miljkovic Points 591

Une nouvelle symfony 2 installer ne contient pas de routage pour l'environnement de production. Si vous prenez un coup d'oeil sous app/config/routing_dev.yml, vous remarquerez que tous les itinéraires que vous pouvez voir dans la démo de l'application ne sont définies que pour le développement. Si vous souhaitez tester la démo sur app.php, vous devez d'abord copier le routage à partir d' routing_dev.yml de routing.yml, et également de permettre à l' AcmeDemoBundle sous AppKernel.php:

$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\DoctrineBundle\DoctrineBundle(),
        new Symfony\Bundle\AsseticBundle\AsseticBundle(),
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
+       new Acme\DemoBundle\AcmeDemoBundle()
    }

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

(+ la ligne, vous devez ajouter, - est la ligne, vous devez supprimer)

16voto

wassim boy Points 121

J'ai eu le même problème et je viens de vider le cache. php app/console cache:clear --env=prod Ceci a résolu mon problème.

Ne mettez pas l'attribut sur true: $ kernel = new AppKernel ('prod', TRUE); cela activera le mode débogage et ce n'est pas recommandé pour le prod.

4voto

Raffael Points 5837

Avait le même problème .

En fait, il pourrait y avoir plusieurs problèmes. mais vous devez vider le cache avec la commande console car symfony met en cache les routes, les modèles et la configuration.

2voto

Misbah Points 56

Lorsque vous suivez la réponse de Anton et obtenez toujours l'erreur, vous pouvez essayer la méthode suivante

À routing.yml , ajoutez ces lignes (uniquement)

 _welcome:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Welcome:index }

_demo_secured:
    resource: "@AcmeDemoBundle/Controller/SecuredController.php"
    type:     annotation

_demo:
    resource: "@AcmeDemoBundle/Controller/DemoController.php"
    type:     annotation
    prefix:   /demo
 

ne pas ajouter ces lignes

 _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
 

Ceci est un exemple du routing.yml que j'ai écrit

 # Internal routing configuration to handle ESI
#_internal:
#   resource: "@FrameworkBundle/Resources/config/routing/internal.xml"
#   prefix:   /_internal
_welcome:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Welcome:index }

_demo_secured:
    resource: "@AcmeDemoBundle/Controller/SecuredController.php"
    type:     annotation

_demo:
    resource: "@AcmeDemoBundle/Controller/DemoController.php"
    type:     annotation
    prefix:   /demo
 

2voto

Olivier ROMAND Points 83

Je suis d'accord avec Andrew.

Tournant la deuxième AppKernel à TRUE permet plus clair message de debug (et vous remarquerez peut-être l'application n'est pas plus rapide que prévu).

Dans mon cas, il m'a dit que j'avais pas _welcome route disponible pour la production (c'est à dire de routage.yml).

J'ai dû ajouter les lignes suivantes comme indiqué par Misbah et suivre d'autres procédures communes pour obtenir mon application fonctionne à pleine vitesse.

_welcome:
 modèle: /
 defaults: { _controller: AcmeDemoBundle:Bienvenue:index }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X