Utilisation d'un fichier .env
Notions théoriques
Le fichier .env
Un fichier .env
est un fichier texte qui est utilisé pour stocker les variables d'environnement.
Ces variables d'environnement peuvent ensuite être utilisées dans votre code.
Voici un exemple de contenu pour un fichier .env
:
DB_HOST=
DB_USER=
DB_PASS=
DB_NAME=
MAIL_USER=
MAIL_PASS=
Afin qu'il soit caché dans certains systèmes d'exploitation (Linux et MacOS), le nom du fichier .env
commence par un point .
L'avantage du fichier .env
est qu'il permet de garder certains éléments sensibles, comme des mots de passe ou des clés API, hors de votre code.
Pour utiliser un fichier .env
en PHP, nous pouvons utiliser la bibliothèque PHPdotenv.
Pour installer la bibliothèque PHPdotenv, nous ferons appel à Composer (que nous avons étudié dans le tutoriel sur Composer).
Voici la commande pour installer PHPdotenv avec Composer :
composer require vlucas/phpdotenv
Une fois que vous avez installé
phpdotenv
, vous pouvez créer un fichier.env
à la racine de votre projet.Dans ce fichier
.env
, vous pouvez définir vos variables d'environnement sous la formeNOM_VARIABLE=valeur
.
Pour accéder à ces variables dans votre code PHP, vous allez devoir charger le fichier .env
avec :
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
Explication du code de ces lignes PHP
Ce code PHP utilise la bibliothèque Dotenv
pour charger des variables d'environnement à partir d'un fichier .env
dans le répertoire actuel.
- La première ligne crée une instance de Dotenv en spécifiant le répertoire actuel comme emplacement du fichier
.env
. - La deuxième ligne charge effectivement les variables d'environnement à partir du fichier
.env
dans l'instance Dotenv créée précédemment. Cela permet de stocker des configurations sensibles ou variables dans un fichier séparé, améliorant ainsi la sécurité et la portabilité du code.
Ensuite, vous pouvez accéder aux variables avec :
$_ENV['NOM_VARIABLE']
- ou
getenv('NOM_VARIABLE')
.
Le fichier .gitignore
Le fichier .gitignore
est un fichier spécial que vous pouvez créer dans le répertoire racine de votre projet pour dire à Git d'ignorer certains fichiers ou dossiers.
"Ignorer un fichier" signifie que Git ne va pas envoyer ce fichier dans le dépôt distant.
Par exemple, nous n'enverrons pas sur GitHub :
- les fichiers temporaires
- les fichiers qui sont générés par une commande, telle que
composer install
- les fichiers qui contiennent des mots de passe
Voici un exemple de contenu pour un fichier .gitignore
:
# Ignore les fichiers temporaires de l'éditeur
*.tmp
# Ignore le fichier .env
.env
# Ignore le dossier vendor
/vendor/
Dans cet exemple, Git ignorera tous les fichiers se terminant par .tmp
, le fichier .env
et tout le contenu du dossier /vendor/
.
Le fichier .env.example
Le fichier .env.example
est généralement utilisé pour fournir un modèle pour le fichier .env
.
Il contient toutes les clés de variables d'environnement nécessaires au projet, mais pas les valeurs réelles.
Ces valeurs doivent être remplies par chaque développeur en fonction de son environnement local.
Voici un exemple de contenu pour un fichier .env.example
:
DB_HOST=
DB_USER=
DB_PASS=
DB_NAME=
MAIL_USER=
MAIL_PASS=
Chaque développeur copiera ce fichier en un nouveau fichier .env
et remplira les valeurs en fonction de sa propre configuration de base de données.
Chaque fois que vous ajoutez une nouvelle variable d'environnement à votre projet, assurez-vous de l'ajouter également au fichier
.env.example
(sans valeur), pour que les autres développeurs sachent qu'ils doivent l'ajouter à leur propre fichier.env
.
Exemple pratique
Créons un fichier .env
qui stocke un nom d'utilisateur et un mot de passe, puis utilisons ces valeurs dans notre code.
Fichier .env
:
USERNAME=georges_dupond
PASSWORD=secret
Code PHP :
use Dotenv\Dotenv;
require 'vendor/autoload.php';
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
print('Username: ' . $_ENV['USERNAME'] . "\n");
print('Password: ' . $_ENV['PASSWORD'] . "\n");
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans ce TP, vous allez :
- installer
composer
sous Windows (si ce n'est pas dejà fait); - créer un fichier
.env
pour stocker les informations de connexion à votre serveur SMTP Infomaniak ; - modifier votre script
send_mail.php
pour utiliser ces informations.
Si Composer n'est pas installé, il vous suffit de consulter le tutoriel sur Composer.
Voici les étapes à suivre pour réaliser ce TP :
-
Installez la bibliothèque PHPdotenv avec la commande
composer require vlucas/phpdotenv
. -
Créez un fichier
.env
à la racine de votre projet. -
Dans le fichier
.env
, définissez les variablesSMTP_HOST
,SMTP_USERNAME
etSMTP_PASSWORD
avec les informations de connexion à votre serveur SMTP Infomaniak. -
Modifiez votre script
send_mail.php
pour charger le fichier.env
et afficher les variables d'environnement (qui nous serviront plus tard à envoyer un mail avec PHP).
Une solution
Vous devez être connecté pour voir le contenu.