Table des matières

Les fichiers .env

Les applications Symfony sont livrées avec un fichier appelé .env situé dans le répertoire racine du projet.
Ce fichier est utilisé pour définir la valeur des variables d'environnement.

Dans tous les environnements, les fichiers suivants sont chargés s'ils existent,
Le dernier chargé étant prioritaires sur les premiers :

Les variables d'environnement réelles sont prioritaires sur les les variables définies dans les fichiers .env.
NE DÉFINISSEZ PAS DE SECRETS DE PRODUCTION DANS CE FICHIER NI DANS AUCUN AUTRE FICHIER COMMITÉ.
https://symfony.com/doc/current/configuration/secrets.html

Convention de nommages

Plusieurs fichiers .env

On peut créer plusieurs fichiers .env en fonction de l'environnement ou on se trouve.

Le fichier .env.xxx qui sera utilisé pour surchargé le fichier .env est paramétré dans le fichier .env lui méme en definissant la variable APP_ENV

.env
....
APP_ENV=prod
# Chargera .env.prod.local
...

En production

Exécutercomposer dump-env prod pour compiler les fichiers .env pour une utilisation en production (nécessite symfony/flex >=1.2).
https://symfony.com/doc/current/best_practices.htmsymfony l#use-environment-variables-for-infrastructure-configuration

Depannage

On peut visualiser le mecanisme avec symfony console debug:dotenv

thierry@obi1:/var/www/test$ php bin/console debug:dotenv

Dotenv Variables & Files
========================

Scanned Files (in descending priority)
--------------------------------------

 * ⨯ .env.local.php
 * ⨯ .env.dev.local
 * ⨯ .env.dev
 * ⨯ .env.local
 * ✓ .env

Variables
---------

 ------------ ---------------------------------- -----------------------------------
  Variable     Value                              .env
 ------------ ---------------------------------- -----------------------------------
  APP_ENV      dev                                dev
  APP_SECRET   0f363272eae2f703c2d2f0fe1b8db8bd   0f363272eae2f703c2d2f0fe1b8db8...
 ------------ ---------------------------------- -----------------------------------

 // Note real values might be different between web and CLI.

Sources & Ressources