jeudi 26 août 2010

Symfony sur mutualisé : mauvaise redirection

Il arrive que l'on bloque sur le déploiement d'un site Symfony sur un hébergement mutualisé choisi par un tiers (par ex. le client), surtout les premiers prix qui ne propose pas la console SSH... On a testé son projet Symfony en local puis sur un Serveur Privé (1and1 ou Amen ...) avec des configurations connues, et voilà que l'on est bloqué par une erreur 500.

Les points à vérifier :

  • Les dossiers cache/ et log/ doivent avoir tous les droits (chmod 777 cache/ log/ si SSH ...) pour que Symfony puisse créer son cache et écrire ses logs.
  • on place le fichier "check_configuration.php"(inclus dans Symfony) dans le dossier /web/ et on va jusqu'à l'URL "www.monsite.com/check_configuration.php" pour connaître les erreurs de config.
  • Si on a "short_open_tag" et "magic_quotes_gpc" à ON, on peut les passer à ON en ajoutant un fichier php.ini (marche sur 1and1) dans le dossier /web/ qui contient seulement : 
short_open_tag = Off
    magic_quotes_gpc = Off
    • On ouvre le fichier .htaccess inclus dans /web et on ajoute après "RewriteEngine On" :
     # pour avoir du php5 sur 1and1
    AddType x-mapp-php5 .php
    AddHandler x-mapp-php5 .php


    • Si www.monsite.fr/index.php fonctionne et que www.monsite.fr/ ne fonctionne pas (Erreur 500), on a sans doute un problème de réécriture d'URL. On ouvre à nouveau le fichier .htaccess et on change une des dernières lignes :
      # no, so we redirect to our front web controller
      RewriteRule ^(.*)$ index.php [QSA,L]
    par :
      # no, so we redirect to our front web controller
      RewriteRule ^(.*)$ /index.php [QSA,L]
     #oui, on a juste ajouté un slash avant index.php !!

     Un excellent article récapitulatif est à lire ici