Aller au contenu principal

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=
attention

Afin qu'il soit caché dans certains systèmes d'exploitation (Linux et MacOS), le nom du fichier .env commence par un point .

info

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 forme NOM_VARIABLE=valeur.

astuce

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.

remarque

"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


Qu'est-ce qu'un fichier .env ?


Comment accédez-vous à une variable d'environnement en PHP ?


Où placez-vous généralement le fichier .env dans votre projet ?


Pourquoi utiliseriez-vous un fichier .env ?


Qu'est-ce qu'un fichier .gitignore ?


Qu'est-ce qu'un fichier .env.example ?


Pourquoi utiliseriez-vous un fichier .env.example ?



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.
astuce

Si Composer n'est pas installé, il vous suffit de consulter le tutoriel sur Composer.

Voici les étapes à suivre pour réaliser ce TP :

  1. Installez la bibliothèque PHPdotenv avec la commande composer require vlucas/phpdotenv.

  2. Créez un fichier .env à la racine de votre projet.

  3. Dans le fichier .env, définissez les variables SMTP_HOST, SMTP_USERNAME et SMTP_PASSWORD avec les informations de connexion à votre serveur SMTP Infomaniak.

  4. 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