Les contenus du cours BRE03 Web Dev Course © 2024 par Mari Doucet sont sous licence CC BY-NC-SA 4.0
Un fichier .env
(abréviation de “environment”) est un fichier texte utilisé dans différents types de projets (web, applicatif, api) pour stocker des configurations d’environnement.
DB_HOST=localhost
DB_USER=root
DB_PASS=password123
DB_NAME=mydatabase
API_KEY=abc123xyz789
Le fichier .env permet de stocker des informations sensibles telles que les mots de passe, les clés API, et autres données confidentielles, sans avoir à les versionner (utilisation du .gitignore
), et donc sans risquer de les exposer au public.
Les variables d’environnement permettent une certaine souplesse dans le développement, par exemple de changer des URLS d’API, de créer un mode debug, et le tout en ayant rien à changer dans le code source.
En séparant code et configuration cela permet au site ou à l’application de pouvoir être déployée plus facilement dans des environnements distincts. (Un serveur de Prod sur RedHat alors que le serveur de test est sur Debian par exemple).
Pour intégrer un fichier .env dans un projet il faut :
.env
à la racine du projet.NOM_VARIABLE=valeur
.Exemple d’un fichier .env
DB_HOST=db.3wa.io
DB_PORT=3306
DB_NAME=prenomnom_phpj7
DB_USERNAME=votre_username
DB_PASSWORD=votre_password
Une fois le fichier existant, nous allons voir comment utiliser la librairie Dotenv pour avoir accès aux variables définie dans .env
dans votre code PHP.
Composer est un outil de gestion des dépendances : il permet de récupérer/installer des versions précises de biliothèques extérieures à votre projet et tout composant nécessaire à leur bon fonctionnement.
Dans notre cas voici la commande à écrire dans votre terminal à la racine d’un projet pour récupérer la librairie PHP de Dotenv
composer require vlucas/phpdotenv
Vous trouverez ainsi tous les composants nécessaires au fonctionnement de la librairie PHP Dotenv dans un dossier ./vendor.
Utiliser une bibliothèque spécifique comme Dotenv pour PHP va permettre de lire le contenu du fichier .env et d’en charger ses variables dans votre application PHP de manière globale.
Exemple :
// Exemple d'utilisation des variables d'environnement dans le contexte d'une connexion à une base de données
require_once __DIR__ . '/vendor/autoload.php';
// Chargement des variables d'environnement
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// Utilisation des variables d'environnement
$host = $_ENV['DB_HOST'];
$port = $_ENV['DB_PORT'];
$user = $_ENV['DB_USERNAME'];
$password = $_ENV['DB_PASSWORD'];
$dbname = $_ENV['DB_NAME'];
$connexionString = "mysql:host=$host;port=$port;dbname=$dbname;charset=utf8";
$db = new PDO(
$connexionString,
$user,
$password
);
Documentation complète de PHP Dotenv : https://github.com/vlucas/phpdotenv
Pour des raisons de sécurité, il est crucial de ne pas versionner le fichier .env
, vous pouvez donc directement l’ajouter dans votre .gitignore. Vous pouvez par contre versionner un .env.example
qui contient simplement des valeurs d’exemple pour, si vous travaillez en groupe que chacun-e sache quoi mettre dans son .env
.
vendor/
.env
composer.lock
Il est recommandé d’avoir des fichiers .env
séparés pour les environnements de développement, de test et de production, contenant des variables appropriées à chaque contexte
Utilisez le mini-projet d’authentification de la journée sur les sessions, les cookies et les hash et transformez la connexion à la base de données en utilisant un .env
.