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

j'ai téléchargé symfony2 et je peux l'exécuter à partir d'app_dev.php.

mais quand je commence à partir de l'application.php, puis j'obtiens une erreur page 404.

app.php est bien évidemment 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.

EDIT :

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:

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 !?

modifier concernant la réponse:

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

a fait l'affaire. attention au paramètre env.

56
demandé sur j0k 2011-07-22 16:21:43

6 réponses

par défaut, Symfony 2 est livré avec un pack de démonstration qui est tout simplement accessible à partir de l'environnement de développement.

L'environnement de production ne contient aucune route, il est donc normal d'obtenir une page d'erreur 404.

EDIT:

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

si oui, vider le cache avec la commande suivante : ./app/console cache:clear

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

41
répondu egeloen 2013-08-30 20:05:39

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:

chown <USER>:<GROUP> <SWITCH> <DIRECTORY>

8
répondu topaz1008 2012-12-09 23:09:58

je voulais juste intégrer quelques conseils pour ce genre de problème car je l'ai affronté de nos jours avec une nouvelle installation Symfony2.

comme une 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, dans l'intervalle, avoir une application ( c.-à-d. AppBundle fourni avec une nouvelle installation ) sur app.php (et éviter 404 ) vous pouvez aussi faire quelque chose comme ça:

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

_main:
    resource: routing.yml

dans /app/config/routing.yml ajouter une nouvelle route (si vous n'avez pas)

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

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


1) :// your_application_path/ web /


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

si tout va bien sur le premier, vous devriez obtenir une page blanche avec une chaîne de caractères" Homepage." ( pour modifier cela aller dans /app/Resources/views/default/index.HTML.rameau... Mise en page est base.HTML.twig) et, sur le second, vous devriez obtenir le Démobundle fourni par Symfony2.

Espère que cela aide!

5
répondu Fabrizio Sabato 2017-06-15 08:34:52

Je l'ai corrigé en laissant simplement le compte du serveur web (c'est-à-dire 'master-chef' posséder le répertoire /Symfony2/app/cache/prod. La commande suivante:

$sudo chown master-chef -R /var/www/Symfony2/app/cache/prod
1
répondu hackintos 2012-07-08 07:03:57

dans votre" Web/app.php" fichier

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

changer la valeur en"true".

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

maintenant, vous pouvez charger l'application en mode production.

0
répondu 2015-08-15 04:52:39

votre problème est lié au cache de Symfony2. J'ai eu les mêmes problèmes. Essayez ceci:

  • sudo php app/console cache:clear --env=prod --no-debug
  • sudo chmod 777 -R ../sf2/ (sf2) est le répertoire principal de mon projet

C'est fini.

-11
répondu Yuri 2012-07-08 07:03:41