Déploiement Symfony 1.0 sur mutualisé OVH

Petit nouveau ! | 5 Messages

22 mars 2009, 00:15

Bonjour à tous,

j'ai un projet symfony version 1.0 que je souhaite déployé sur un serveur mutualisé OVH. Jusque là rien de bien compliqué.
Mon projet est composé de deux applications, frontend et backend.

Pour informations j'ai lus et relus bon nombre de tutos pour cela, mais envain.

Une fois mon projet 'freezé', j'ai vidé le contenu du ftp OVH et uploadé mon projet en changeant le nom du dossier web en www.

J'ai ajouté un fichier /config/php.yml :

Code : Tout sélectionner

check: magic_quotes_gpc: on register_globals: on


j'ai modififé les fichiers config.php des deux applications :
<?php
$sf_root_dir = sfConfig::get('sf_root_dir');
$sf_upload_dir_name = sfConfig::get('sf_upload_dir_name');
sfConfig::add(array(
  'sf_web_dir_name' => $sf_web_dir_name = 'www',
  'sf_web_dir'      => $sf_root_dir.DIRECTORY_SEPARATOR.$sf_web_dir_name,
  'sf_upload_dir'   => $sf_root_dir.DIRECTORY_SEPARATOR.$sf_web_dir_name.DIRECTORY_SEPARATOR.$sf_upload_dir_name,
));
J'ai modifié le www/.htacess en y mettant :

Code : Tout sélectionner

Options +FollowSymLinks +ExecCGI <IfModule mod_rewrite.c> RewriteEngine On # we skip all files with .something RewriteCond %{REQUEST_URI} \..+$ RewriteCond %{REQUEST_URI} !\.html$ RewriteCond %{REQUEST_URI} !\.php5 RewriteRule .* - [L] # we check if the .html version is here (caching) RewriteRule ^$ /index.html [QSA] RewriteRule ^([^.]+)$ /$1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f # no, so we redirect to our front web controller RewriteRule ^(.*)$ /index.php5 [QSA,L] RewriteRule ^index\.php5/(.*)$ /index.php5 [QSA,L] RewriteRule ^frontend_dev\.php5/(.*)$ /frontend_dev.php5 [QSA,L] </IfModule> # big crash from our front web controller ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"
Mon fichier index.php ressemble à ca :
<?php

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/..'));
define('SF_APP',         'vitrine');
define('SF_ENVIRONMENT', 'prod');
define('SF_DEBUG',       false);

require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');

sfContext::getInstance()->getController()->dispatch();
Mon problème est donc qu'à l'appel de mon index.php, lorsque le fichier SF_ROOT_DIR/apps/SF_APP/config/config.php en l'occurence le config.php de mon application vitrine (cité plus haut) j'ai droit à une jolie fatal error Class 'sfConfig' not found ...

Aide moi =)

Merci d'avance.

Cordialement,

Flo L.

ViPHP
ViPHP | 1024 Messages

22 mars 2009, 00:37

hello,

à mon avis, PHP5 n'est pas activé.
Pour l'activer et en même temps supprimer le fichier php.yml, un .htaccess suffit, avec ces lignes :

Code : Tout sélectionner

SetEnv PHP_VER 5 SetEnv REGISTER_GLOBALS 0 SetEnv MAGIC_QUOTES 0
donc il faut ajouter ces lignes :
- au .htaccess du /www
- dans un .htaccess, à la racine de tous les autres fichiers de ton site

ça marche pour moi (60 GP, 90 GP, cf http://www.creajeu.net/ )

A+

Pascal

Petit nouveau ! | 5 Messages

22 mars 2009, 00:45

Je test et j'edit.

EDIT :

j'ai donc ajouté à la racine au même niveau que /www, /apps, etc.. un .htaccess avec :

Code : Tout sélectionner

SetEnv PHP_VER 5 SetEnv REGISTER_GLOBALS 0 SetEnv MAGIC_QUOTES 0
et mon .htaccess dans /www ressemble à ca :

Code : Tout sélectionner

SetEnv PHP_VER 5 SetEnv REGISTER_GLOBALS 0 SetEnv MAGIC_QUOTES 0 Options +FollowSymLinks +ExecCGI <IfModule mod_rewrite.c> RewriteEngine On # we skip all files with .something RewriteCond %{REQUEST_URI} \..+$ RewriteCond %{REQUEST_URI} !\.html$ RewriteCond %{REQUEST_URI} !frontend_dev\.php RewriteRule .* - [L] # we check if the .html version is here (caching) RewriteRule ^$ /index.html [QSA] RewriteRule ^([^.]+)$ /$1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f # no, so we redirect to our front web controller RewriteRule ^(.*)$ /index.php [QSA,L] RewriteRule ^frontend_dev\.php/(.*)$ /frontend_dev.php [QSA,L] </IfModule> # big crash from our front web controller ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"[QSA,L]
et j'ai une

Internal Server Error

et si je dégage la derniere ligne du www/.htaccess ( "ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"[QSA,L]")

Fatal error: Class 'sfConfig' not found in /apps/vitrine/config/config.php on line 2


miAm

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

22 mars 2009, 02:32

C'est normal, dans config.php, sfConfig n'est pas encore connu il me semble...

As-tu repris les valeurs d'origine de ces fichiers, chez moi pour un projet en 1.0 dont je n'ai presque pas modifié la config (sauf les chemins vers les libs Symfony dans le config.php du projet pour qu'il ne soit pas dépendant de son environnement), j'ai ceci :

/config/config.php
<?php

// symfony directories
$sf_symfony_lib_dir  = dirname(__FILE__) . '/../lib/vendor/symfony/lib';
$sf_symfony_data_dir = dirname(__FILE__) . '/../lib/vendor/symfony/data';
/apps/backend/config/config.php
<?php

// include project configuration
include(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');

// symfony bootstraping
require_once($sf_symfony_lib_dir.'/util/sfCore.class.php');
sfCore::bootstrap($sf_symfony_lib_dir, $sf_symfony_data_dir);
ça ne ressemble pas d'un iota à ce que tu présentes, j'ai donc un doute ;)

Donne-nous ta version exacte (le 'x' dans '1.0.x' ^^) pour voir, mais j'ai dans l'idée que si tu laisses ton /config/config.php tel qu'il est, et que tu modifies ton /apps/SF_APP/config/config.php en ceci, ça marchera mieux :
<?php

// include project configuration
include(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');

// symfony bootstraping
require_once($sf_symfony_lib_dir.'/util/sfCore.class.php');
sfCore::bootstrap($sf_symfony_lib_dir, $sf_symfony_data_dir);

sfConfig::add(array(
  'sf_web_dir_name' => $sf_web_dir_name = 'www',
  'sf_web_dir'      => $sf_web_dir = SF_ROOT_DIR.DIRECTORY_SEPARATOR.$sf_web_dir_name,
  'sf_upload_dir'   => $sf_web_dir.DIRECTORY_SEPARATOR.'uploads',
));

PS: a priori il est inutile de mettre un .htaccess ailleurs que dans www, vu qu'Apache lira la conf dans le dossier d'entrée, en l'occurrence www, les fichiers qui sont inclus le seront tous à partir d'index.php, et donc seul le langage d'interprétation d'index.php compte, conclusion inutile de mettre un .htaccess dans apps/, lib/, etc... Cela évitera d'y voir encore moins clair ;)

Petit nouveau ! | 5 Messages

22 mars 2009, 14:21

Je regarde et j'edit ;)

EDIT :

Tout d'abord je travaille avec la version sf 1.0.19
A la différence avec toi dans mon fichier, ./config/config.php du projet, j'ai :
<?php

// symfony directories
$sf_symfony_lib_dir  = dirname(__FILE__).'/../lib/symfony';
$sf_symfony_data_dir = dirname(__FILE__).'/../data/symfony';
Je n'ai pas de dossier ./lib/vendor

et dans mes applications, j'ai copié/collé ce que tu m'as dit et j'ai donc :
<?php 

// include project configuration 
include(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php'); 

// symfony bootstraping 
require_once($sf_symfony_lib_dir.'/util/sfCore.class.php'); 
sfCore::bootstrap($sf_symfony_lib_dir, $sf_symfony_data_dir); 

sfConfig::add(array( 
  'sf_web_dir_name' => $sf_web_dir_name = 'www', 
  'sf_web_dir'      => $sf_web_dir = SF_ROOT_DIR.DIRECTORY_SEPARATOR.$sf_web_dir_name, 
  'sf_upload_dir'   => $sf_web_dir.DIRECTORY_SEPARATOR.'uploads', 
));
Et le problème persiste, http://labadens.eu/

Internal Server error...

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

22 mars 2009, 15:33

Normal pour le /config/config.php, il est propre à l'endroit où on a mis Symfony, donc pas de souci de ce côté là ;)

Si tu envoies un contrôleur de dév là-bas, ça affiche quoi ? Parce qu'avec le contrôleur de prod on ne voit pas l'erreur en question.

Edit : en tous cas après vérification sur le dépot SVN, le fichier /apps/SF_APP/config/config.php devrait bien ressembler à ce que j'ai donné. Donc tu approches sans doute plus du but qu'avant.

Petit nouveau ! | 5 Messages

22 mars 2009, 15:53

Quelquesoit le controleur que j'envois c'est une Internal Server Error.

Je pense mon problème vient d'OVH et PHP5. Je m'explique :

j'ai virer le .htaccess et j'ai mis un fichier phpinf.php contenant simplement
<?php phpinfo(); ?>
en tappant l'url : labadens.eu/phpinf.php j'obtient php version 4.x.x
et en le renommant en php5 j'obtient php version 5.x.x, jusque là c'est normal.

je remets le .htaccess et je les restreint à :

Code : Tout sélectionner

SetEnv PHP_VER 5 # big crash from our front web controller ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"[QSA,L]
j'ai enlevé le php5 de mon fichier phpinf et la impossible de le lire. INTERNAL SERVER ERROR !!

Voilà ou jen suis. Mon offre est un start1g...

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

22 mars 2009, 16:57

Et bien essaie simplement de renommer ton "/www/index.php" en "/www/index.php5" :)

Edit : et aussi dans un premier temps, passe no_script_name à "off" et vire le .htaccess, parce que ça peut aussi être certaines fonctionnalités de la conf apache qui ne sont pas dispo dans un Start 1G. Déjà faire marcher avec cette config minimale, et après tu rajouteras le .htaccess et le no_script_name pour voir si l'url rewriting peut fonctionner ;)

Petit nouveau ! | 5 Messages

22 mars 2009, 19:35

Ca marche en passant en .php5 et en virant le .htaccess
Je vais tester en remettant le .htaccess de base.

Merci de l'info.

Je repasse dès que j'ai un semblant de réponse.