[Yii] Configuration d’une application Yii
Dans cet article, nous allons voir comment mettre en place un environnement de prod avec yii.
Nous considérons que sur notre serveur, le répertoire public web est le dossier « htdocs ».
Plusieurs éléments ne doivent pas être dans le dossier public, c’est pourquoi nous allons organiser notre projet au niveau supérieur.
Notre serveur va donc avoir l’arborescence suivante :
Voyons maintenant à quoi correspond chaque dossier :
– framework > ce dossier contient le framework yii, il est identifié ainsi au cas où on aurait besoin de mettre d’autres framework
– htdocs > c’est l’espace publique du site
– protected, runtime et themes sont les dossiers classiques de yii.
Ces derniers sont d’habitudes dans htdocs, mais pour un environnement en production, il vaut mieux les déplacer hors de la zone public.
Attention, il faut faire mettre en écriture le runtime.
chmod -R 0777 runtime
Pour que notre application puisse fonctionner, il faut maintenant modifier le fichier index.php comme suit :
<?php $yii = dirname(__FILE__).'/../framework/yii.php'; $config = dirname(__FILE__).'/../protected/config/main.php'; defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); if ( 'production' != APPLICATION_ENV ){ defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3); } else { if ( isset($_REQUEST['debug']) && (1 == $_REQUEST['debug']) ){ defined('YII_DEBUG') or define('YII_DEBUG', true); } } require_once($yii); Yii::createWebApplication($config)->run();
Il faut aussi ajouter un fichier .htaccess :
RewriteEngine on # decommenter l'environnement choisi #SetEnv APPLICATION_ENV production SetEnv APPLICATION_ENV development # si un dossier ou un fichier existe, il est utilisé directement RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # sinon le transmettre à index.php RewriteRule . index.php
Regardons ensemble le contenu du fichier index.php.
Les 2 premières lignes sont classique dans un index de yii, si ce n’est les chemins qui changent.
$yii = dirname(__FILE__).'/../framework/yii.php'; $config = dirname(__FILE__).'/../protected/config/main.php';
En revanche, ce qui est moins classique, c’est de récupérer la variable d’environnement défini dans le fichier .htaccess
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
C’est une récupération des projets fait en Zend.
Si la variable d’environnement APPLICATION_ENV n’existe pas, on considère par défaut que l’on est en production.
Et si nous ne sommes pas en production, alors on active par défaut le mode debug et son niveau :
defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);
Si nous sommes en production, mais que nous voulons quand même accéder au mode debug (éh oui, ça peut être utile), alors l’activation se fait par passage de paramètre dans l’url.
if ( isset($_REQUEST['debug']) && (1 == $_REQUEST['debug']) ){ defined('YII_DEBUG') or define('YII_DEBUG', true); }
La fin du fichier est tout a fait ordinaire, c’est une simple création d’application yii.
Revenons maintenant sur le fichier .htaccess.
La réécriture d’url a été activé :
RewriteEngine on
Si on est en production, on défini la variable d’environnement comme ça :
SetEnv APPLICATION_ENV production
Sinon comme cela :
SetEnv APPLICATION_ENV development
Enfin si un dossier ou un fichier existe, il est utilisé directement :
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
Et de le transmettre au fichier index.php
RewriteRule . index.php
Voilà, vous avez normalement un environnement près pour travailler localement et en production.