Dans une approche typique de configuration, on rencontre de multiples problèmes :
Pour résoudre ces problèmes, Yii introduit un concept d'environnement simple. Chaque environnement est représenté par un jeu de fichiers dans le dossier environments
. La commande init
est utilisée pour initialiser un environnement. Ce que fait exactement cette commande, c'est copier tout ce qui se trouve dans le dossier de l'environnement dans le dossier racine où se trouvent les applications.
Par défaut, il y a deux environnements : dev
et prod
. Le premier sert au développement et les outils de développement et de débogage y sont activés. Le second sert au déploiement sur les serveurs. Les outils de débogage et de développement y sont désactivés.
Typiquement un environnement contient les fichiers d'amorçage de l'application tels que index.php
et les fichiers de configuration avec le suffixe -local.php
. Il s'agit soit de fichiers de configuration personnels de membres de l'équipe qui sont généralement dans l'environnement dev
ou de configurations de serveurs spécifiques. Par exemple, la connexion à la base de données de production peut être dans une configuration -local.php
de l'environnement prod
.
Ces configurations locales sont ajoutées à .gitignore
et ne sont jamais poussées sur le dépôt de code source.
Pour éviter que des configurations ne s'écrasent les unes les autres, l'interface utilisateur (frontend), par exemple, lit les configurations dans cet ordre :
common/config/main.php
common/config/main-local.php
frontend/config/main.php
frontend/config/main-local.php
Les paramètres sont lus dans cet ordre :
common/config/params.php
common/config/params-local.php
frontend/config/params.php
frontend/config/params-local.php
Une configuration écrase celles qui la précèdent.
Voici le schéma complet :