PHP dispose d'une série de variables déjà créées et qui stockent des données relatives à l'environnement d’exécution du code. On les appelle variables d'environnement.
Les variables d'environnement sont très utiles en programmation (notamment en PHP). Il permettent d'avoir une idée claire sur l'environnement du programme qui peut être soit le client ou le serveur. Elles peuvent ainsi fournir des informations sur le type du serveur, son adresse IP, version des spécifications CGI utilisées, type du navigateur du visiteur, le nom de sa machine... etc
Pour connaitre toutes les variables d'environnement disponibles on fait appel à la fonction phpinfo().
Fonction phpinfo()
La fonction phpinfo() permet d'avoir un récapitulatif sur la configuration de PHP sur le serveur Web. Elle affiche un tableau qui contient de nombreuses informations telles que la version du langage, options de compilation, extensions, entêtes HTTP, informations sur le système. Cependant, cette fonction est connue pour pouvoir englober l'ensemble des variables d'environnement disponibles associées à leurs valeurs courantes.
Pour avoir tous ces détails il suffit d’exécuter le code:
<?php
phpinfo();
?>
Il suffit de défiler la page jusqu'au bloc Environment qui liste toutes les variables d'environnement disponibles. (Il est possible que le bloc porte un autre titre mais c'est facile à identifier).
Manipulation des variables d'environnement
Il existe deux manières d'appeler les variables d’environnement:
Variable $_SERVER: c'est d'une variable superglobale. Il s'agit en fait d'un tableau associatif dont les clés représentent les éléments d'environnement dont on souhaite connaitre la valeur. $_SERVER est également appelée variable serveur.
fonction getenv(): Cette fonction accepte comme paramètre une chaîne de caractères qui est la même que l'on passe à la variable $_SERVER en guise de clé. Cette chaîne représente l'élément dont on cherche à connaitre la valeur.
Exemple:
Quand j'ai exécuté le code suivant sur ma machine personnelle:
<?php
echo $_SERVER["HTTP_USER_AGENT"];
?>
j'ai obtenu le résultat suivant:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Il s'agit d'un extrait d'informations concernant le navigateur que j'utilise et le moteur de rendu embarqué.
Et quand j'ai exécuté celui là:
<?php
echo getenv("HTTP_USER_AGENT");
?>
j'ai eu ce résultat:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Les deux résultats sont identiques que vous utilisiez la variable superglobale $_SERVER ou la fonction getenv(). Cependant, la plupart des développeurs PHP ont un léger penchant vers la variable $_SERVER.
Liste des variables d'environnement
Dans ce paragraphe, je vais essayer de lister les variables d'environnement les plus fréquents. Si vous voulez connaitre toutes les variables existantes il suffit d’exécuter la fonction phpinfo().
SERVER_NAMEgetenv("SERVER_NAME") ou $_SERVER["SERVER_NAME"] Retourne le nom du serveur qui exécute le script.
SERVER_ADDRgetenv("SERVER_ADDR") ou $_SERVER["SERVER_ADDR"] Retourne l'adresse IP du serveur qui exécute le script.
SERVER_ADMINgetenv("SERVER_ADMIN") ou $_SERVER["SERVER_ADMIN"] Retourne l'email de l'administrateur du serveur.
REQUEST_METHODgetenv("REQUEST_METHOD") ou $_SERVER["REQUEST_METHOD"] Retourne la méthode utilisé pour la requête HTTP.
DATE_GMTgetenv("DATE_GMT") ou $_SERVER["DATE_GMT"] Retourne la date du serveur au format GMT.
DATE_LOCALgetenv("DATE_LOCAL") ou $_SERVER["DATE_LOCAL"] Retourne la date du serveur au format local.
DOCUMENT_ROOTgetenv("DOCUMENT_ROOT") ou $_SERVER["DOCUMENT_ROOT"] Retourne le chemin de la racine du serveur.
HTTP_HOSTgetenv("HTTP_HOST") ou $_SERVER["HTTP_HOST"] Retourne le nom du domaine du serveur.
HTTP_USER_AGENTgetenv("HTTP_USER_AGENT") ou $_SERVER["HTTP_USER_AGENT"] Retourne des informations sur le navigateur et le système d'exploitation du client.
REMOTE_ADDRgetenv("REMOTE_ADDR") ou $_SERVER["REMOTE_ADDR"] Retourne l'adresse IP du client qui appelle le script CGI.
PHP_SELFgetenv("PHP_SELF") ou $_SERVER["PHP_SELF"] Retourne le nom de la page exécutée.
HTTP_REFERERgetenv("HTTP_REFERER") ou $_SERVER["HTTP_REFERER"] Retourne le nom de la page qui a envoyé le client vers la page courante.
Exemple:
<?php
echo $_SERVER["HTTP_USER_AGENT"];
// Affiche: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Les constantes en général servent à rendre un code plus claire et facile à comprendre. En plus des constantes personnalisées que l'on peut créer à l'aide de la fonction define(), PHP dispose de ses propres constantes prédéfinies.
Les constantes PHP sont des constantes prédéfinies par le langage. Il en existe beaucoup mais j'ai opté pour vous énumérer les plus fréquentes:
PHP_OS: retourne des informations sur le système d'exploitation installé sur le serveur.
PHP_VERSION: retourne la version du langage PHP installée sur le serveur Web.
__FILE__: (deux soulignés avant et après) retourne le nom du fichier en cours (qui exécute le script PHP).
__LINE__: (deux soulignés avant et après) retourne numéro de la ligne qui exécute la constante.