web-dev-qa-db-fra.com

symfony2 - comment passer de "dev" à "prod"?

J'ai téléchargé symfony2 et je suis en mesure de l'exécuter à partir de app_dev.php.

Mais quand je commence à app.php, alors je reçois une erreur page 404.

app.php est bien sûr là et il est exécuté.

L'erreur se produit apparemment quelque part après la dernière ligne de code dans app.php:

$kernel->handle(Request::createFromGlobals())->send();

Je suppose qu'il y a un commutateur quelque part que je dois configurer.

ÉDITER :

Comme suggéré par GeLo, j'ai ajouté le routage pour la version de production à app/config/routing.yml.

_welcome:
    resource: "@AcmeDemoBundle/Resources/config/routing.yml"
    prefix:     /

J'ai créé src/Acme/DemoBundle/Resources/config/routing.yml avec le contenu suivant:

bla:
    pattern: /
    defaults: {_controller:AcmeDemoBundle:Demo:index}

Dans DemoController::indexAction() j'ai placé un die(__FILE__);

rien; Je reçois toujours 404 de app.php!?

EDIT concernant la réponse:

./app/console --env=prod cache:clear

a fait le tour. attention au paramètre env.

57
Raffael

Par défaut, Symfony 2 est fourni avec un ensemble de démo accessible uniquement à partir de l'environnement de développement.

L'environnement de production ne contient aucun itinéraire. Il est donc normal que vous obteniez une page d'erreur 404.

MODIFIER :

Êtes-vous sûr que votre paquet est activé dans le fichier AppKernel.php?

Si oui, effacez le cache avec la commande suivante: ./app/console cache:clear

Vérifiez si la route est activée avec la commande suivante: ./app/console router:debug

41
egeloen

Changer le propriétaire à la place.
Sudo chown www-data:www-data -R app/cache
Sudo chown www-data:www-data -R app/logs

C’est laisser le navigateur posséder les dossiers. la syntaxe est la suivante:
chown <USER>:<GROUP> <SWITCH> <DIRECTORY>

8
topaz1008

Je voulais juste intégrer quelques astuces pour résoudre ce type de problème, car je le trouvais face aujourd’hui avec une nouvelle installation de Symfony2.

En tant que nouvelle installation, vous obtenez normalement AppBundle sous/src/AppBundle avec AcmeDemoBundle sous/src/Acme/DemoBundle

Si vous voulez exécuter AcmeDemoBundle sur app_dev et, en attendant, disposer d'une application (c'est-à-dire AppBundle fournie avec une nouvelle installation) sur app.php (et éviter 404), vous pouvez également procéder de la sorte:

dans / app/config/routing_dev.yml commentez les lignes suivantes (si vous en avez):

_main:
    resource: routing.yml

dans / app/config/routing.yml ajouter un nouvel itinéraire (si vous n'en avez pas)

index:
    pattern:  /
    defaults: { _controller: AppBundle:Default:index }

puis cache vide comme déjà conseillé par les autres et tester l'application sur


1) http: // your_application_path/web /


2) http: // your_application_path/web/app_dev.php

Si tout va bien sur le premier, vous devriez obtenir une page blanche avec une chaîne "Homepage". (pour éditer celui-ci, allez dans /app/Resources/views/default/index.html.twig ... La présentation de celui-ci est base.html.twig) et sur le second, vous obtiendrez le DemoBundle fourni par Symfony2.

J'espère que ça aide!

5
Fabrizio Sabato

Je l'ai corrigé en laissant simplement le compte du serveur Web (c'est-à-dire "maître-chef" propriétaire du répertoire/Symfony2/app/cache/prod. La commande ci-dessous:

$Sudo chown master-chef -R /var/www/Symfony2/app/cache/prod
1
hackintos

Dans votre fichier "web/app.php"

 $kernel = new AppKernel('prod', false);

Définissez la valeur sur "true".

 $kernel = new AppKernel('prod', true);

Vous pouvez maintenant charger l'application en mode production.

0
user608540