https://a.storyblok.com/f/270183/1368x665/83ad497503/25apr_dev-blog_enviormental-variables_sympony.jpg

Comment utiliser les variables d'environnement PHP dans Symfony

Publié le April 17, 2025

Temps de lecture : 3 minutes

Introduction

Les variables d'environnement (env vars) vous permettent de configurer votre environnement Symfony en fonction de l'environnement d'exécution. Ce tutoriel vous guidera dans l'utilisation des variables d'environnement dans un projet Symfony.

Comprendre les variables d'environnement et les paramètres

Symfony utilise des variables d'environnement pour stocker des valeurs de configuration telles que les identifiants de la base de données, les clés API et d'autres informations sensibles ou spécifiques à l'environnement. Ces valeurs peuvent être définies dans un fichier .env ou directement dans l'environnement du serveur. Alors que les variables d'environnement définissent des valeurs au niveau du système ou de l'application, les paramètres sont stockés dans le conteneur de service et peuvent faire référence à des variables d'environnement.

Configuration des variables d'environnement

L'utilisation de la.env Fichier

Les projets Symfony sont livrés avec un fichier .env dans lequel vous pouvez définir des variables d'environnement :

# .env

VONAGE_API_KEY=your_api_key

VONAGE_API_SECRET=your_api_secret

Vous pouvez également créer un fichier env.local qui remplacera les paramètres de votre environnement local.

# .env.local

VONAGE_API_KEY=your_production_api_key

VONAGE_API_SECRET=your_production_api_secret

Accès aux variables d'environnement dans Symfony

Dans votre .env ou env.local il y a une variable nommée APP_ENV. C'est ce paramètre qui détermine les fichiers de configuration à lire au moment de l'exécution. prod pour la production (par exemple, si vous utilisez une plate-forme en tant que service telle que Platform.sh), test pour un environnement de type UAT lorsque vous utilisez des outils tels que PHPUnit ou PHPStan et enfin dev pour votre environnement de développement local. Il existe deux méthodes différentes pour récupérer la configuration chargée.

Dans les fichiers de configuration

Symfony permet de référencer des variables d'environnement dans les fichiers de configuration en utilisant la syntaxe %env(VAR_NAME)% dans les fichiers de configuration. Par exemple, dans config/packages/vonage.yaml:

Vonage:

    api_key: '%env(VONAGE_API_KEY)%'

    api_secret: '%env(VONAGE_API_SECRET)%'

Dans les services

Vous pouvez injecter des variables d'environnement dans les services en les spécifiant dans le champ config/services.yaml:

parameters:

    vonage.api_key: '%env(VONAGE_API_KEY)%'

    vonage.api_secret: '%env(VONAGE_API_SECRET)%'

Ensuite, dans votre service classe :

namespace App\Service;

use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;

class VonageService

{

    private string $apiKey;

    private string $apiSecret;

    public function __construct(private 

ContainerBagInterface

 $config)

    {

       

$this->apiKey = $this->params->get('vonage.api_key');

$this->apiSecret = $this->params->get('vonage.api_secret');

    }

}

Vous pouvez également utiliser la fonction getenv() de PHP :

$apiKey = getenv('VONAGE_API_KEY');

$apiSecret = getenv('VONAGE_API_SECRET');

Dans la bibliothèque standard, il s'agit essentiellement d'une enveloppe pour la commande $_ENV[] SuperglobalCependant, il est recommandé d'utiliser la configuration de Symfony, qui dispose d'un ensemble d'outils beaucoup plus polyvalents pour gérer les variables d'environnement.

Validation et normalisation des variables d'environnement

Symfony fournit un env() pour transformer et valider les variables d'environnement :

parameters:

    vonage_api_key: '%env(string:VONAGE_API_KEY)%'

    vonage_api_secret: '%env(string:VONAGE_API_SECRET)%'

Quand utiliser des variables d'environnement ou des paramètres

  • Utilisez les paramètres pour les valeurs qui restent constantes d'un environnement à l'autre.

  • Utiliser des variables d'environnement pour les valeurs qui changent en fonction de l'environnement, telles que les clés et les secrets de l'API.

Optimiser les performances

Pour améliorer les performances en production, il est possible de transférer les variables d'environnement dans un fichier PHP compilé :

composer dump-env prod

Cela génère .env.local.phppermettant à Symfony de charger les variables d'environnement sans analyser les fichiers .env au moment de l'exécution.

Variables d'environnement et paramètres de débogage

Les commandes suivantes permettent d'inspecter les paramètres actuels :

bin/console debug:container --env-vars

bin/console debug:container --parameters

Considérations relatives à la sécurité

  • Ne jamais livrer les données sensibles du fichier .env dans le contrôle de version.

  • Utiliser .env.local pour les dérogations locales et configurer les environnements de production à l'aide de variables d'environnement réelles.

  • Validez les variables d'environnement avant de les utiliser.

Comprendre l'environnement Symfony par rapport à l'environnement serveur

  • Environnement Symfony (APP_ENV) définit le mode d'application (par ex, dev, prod, test).

  • Environnement du serveur désigne la machine physique ou virtuelle qui exécute l'application.

Conclusion

Avec les variables d'environnement, Symfony vous donne un moyen sympa d'adapter votre application à n'importe quelle étape - développement, test ou production - sans rien coder en dur, ce qui la rend propre et sécurisée.

Vous avez une question ou souhaitez partager ce que vous construisez ?

Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.

Partager:

https://a.storyblok.com/f/270183/384x384/b68093ec17/diana-pham.png
Diana PhamDéfenseur des développeurs

Diana est défenseur des développeurs chez Vonage. Elle aime manger des huîtres fraîches.