09 — vlucas/phpdotenv : Gestion des variables d’environnement
Définition
Une variable d’environnement est une valeur de configuration qui change selon l’environnement (développement, production, test). Le fichier .env stocke ces variables, et le package vlucas/phpdotenv permet de les charger automatiquement dans PHP.
🔗 Comparaison Laravel
C’est exactement le même package ! Laravel utilise vlucas/phpdotenv en interne depuis sa version 5.
| Notre blog | Laravel |
|---|---|
vlucas/phpdotenv v5 |
vlucas/phpdotenv v5 (intégré) |
Chargé dans helpers.php |
Chargé dans bootstrap/app.php |
Variables accessibles via $_ENV['KEY'] |
Variables accessibles via env('KEY') helper |
Installation
composer require vlucas/phpdotenv
Cela ajoute dans composer.json :
"require": {
"vlucas/phpdotenv": "^5.6"
}
Le fichier .env
DB_HOST=localhost
DB_NAME=blog-cfpc-2026
DB_USER=valet
DB_PASS=valet
Règles importantes
- Ne jamais commiter
.envdans Git ! Il contient des mots de passe. - Créer un fichier
.env.exampleavec les clés mais sans les valeurs pour guider les autres développeurs.
Notre .gitignore devrait contenir :
.env
vendor/
Chargement dans app/helpers.php
require_once __DIR__ . '/../vendor/autoload.php';
// Chargement des variables d'environnement
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
$dotenv->load();
Analyse
Dotenv\Dotenv::createImmutable(__DIR__ . '/..')
createImmutable: crée une instance qui ne peut pas être modifiée après chargement (contrairement àcreateMutable).__DIR__ . '/..': chemin vers la racine du projet (le dossier parent deapp/). C’est là que se trouve le fichier.env.
$dotenv->load()
Lit le fichier .env et charge chaque ligne dans $_ENV et $_SERVER.
Utilisation dans database/database.php
// Avant phpdotenv : valeurs en dur ❌
define('DB_SERVERNAME', '127.0.0.1');
define('DB_USERNAME', 'valet');
define('DB_PASSWORD', 'valet');
define('DB_DATABASE', 'blog-cfpc-2026');
// Après phpdotenv : depuis l'environnement ✅
define('DB_SERVERNAME', $_ENV['DB_HOST'] ?? '127.0.0.1');
define('DB_USERNAME', $_ENV['DB_USER'] ?? 'root');
define('DB_PASSWORD', $_ENV['DB_PASS'] ?? '');
define('DB_DATABASE', $_ENV['DB_NAME'] ?? 'blog-cfpc-2026');
L’opérateur ?? 'valeur_par_defaut' est une sécurité : si la variable n’est pas définie dans .env, on utilise une valeur par défaut.
Pourquoi c’est important ?
1. Sécurité
Les identifiants de base de données ne sont plus dans le code source. Si votre dépôt Git est public (ou compromis), les mots de passe ne sont pas exposés.
2. Flexibilité
En développement :
DB_HOST=localhost
DB_USER=valet
En production :
DB_HOST=mysql.monserveur.com
DB_USER=prod_user
DB_PASS=MotDePasseComplexe!123
Même code, configurations différentes.
3. En équipe
Chaque développeur a son propre .env local. Pas de conflits Git sur les configurations personnelles.
🔮 Le helper env() de Laravel
En Laravel, on n’utilise pas $_ENV directement. On utilise le helper env() :
// Laravel
$host = env('DB_HOST', 'localhost');
// Notre blog
$host = $_ENV['DB_HOST'] ?? 'localhost';
Le résultat est identique. env() est juste plus lisible et offre plus de fonctionnalités (cache de configuration, etc.).
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur 09 — `vlucas/phpdotenv` : Gestion des variables d'environnement. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.