Variable d'environnement et le serveur web interne de PHP

Depuis quelques temps, j'utilise le serveur web interne de PHP comme environnement de développement. Ainsi, je n'ai plus besoin de configurer des virtualhosts dans Apache et ils devient également beaucoup plus simple de tester les sites avec différentes versions de PHP.

Toutefois, il arrive qu'il soit nécessaire de définir des variables d'environnements pour déterminer, par exemple, le mode «développement» de l'application.

Au départ l'utilisation est très simple! Pour démarrer le serveur web interne en écoute sur le port 8080 en localhost, il suffit de lancer la commande suivante dans le répertoire contenant le fichier index.php de l'application.

php -S localhost:8080

Ouvrez votre navigateur et aller à l'adresse http://localhost:8080 pour accéder à votre application.

Selon la façon dont vous souhaitez accéder à votre variable d'environnment, vous avez 2 méthodes pour passer votre variable au serveur web interne.

Imaginons que vous voulez accéder à une variable d'environnement nommé «FOO» dans le code de votre application.

Méthode 1 :: pour y accéder avec la fonction getenv() de php, il vous suffit alors de procéder ainsi :

FOO=bar php -S localhost:8080


Pour tester dans votre code:

var_dump(getenv("FOO"));

Résultat:

string(3) "bar" 

Méthode 2 :: pour y accéder avec la variable globale $_ENV de PHP. Il semblerait que E est exclu du paramètre «variables_order» lors de l'exécution du serveur web interne de PHP. Donc, il est nécessaire d'ajouter E au paramètre «variables_order» en utilisant le commutateur «-d» lors du lancement.

FOO=bar php -d variables_order=EGPCS -S localhost:8080


Pour tester dans votre code:

var_dump($_ENV["FOO"]);

Résultat:

string(3) "bar" 

Voilà , vous pourrez maintenant utiliser adéquatement les variables d'environnements avec le serveur web interne de PHP.

Pour connaître d'autres trucs pour l'utilisation du serveur web interne de PHP, consulter la page officielle de la documentation de PHP à l'adresse http://php.net/manual/fr/features.commandline.webserver.php