4.Configuration et environnement d'exécution de PHP

4.3.Environnement d'exécution de PHP

4.3.3.Les variables prédéfinies

4.3.3.1.Introduction

Lorsqu'un script PHP est exécuté, un certain nombre de variables sont créées (et complétées) automatiquement. Leur nombre et leur contenu diffère selon que le script est exécuté en ligne de commande ou au sein d'un serveur web mais elles reflètent l'environnement dans lequel tourne le script PHP. Parmi elles, il y a (dans l'ordre alphabétique):
  • $_COOKIE
  • $_ENV
  • $_FILES
  • $_GET
  • $_GLOBALS
  • $_POST
  • $_REQUEST
  • $_SERVER
  • $_SESSION
  • $argc
  • $argv
  • $HTTP_RAW_POST_DATA
  • $php_errormsg
Ces variables ont la particularité de pouvoir être appelées depuis l'intérieur d'une fonction ou d'une méthode (elles sont dites "globales").

4.3.3.2.$_SERVER

4.3.3.2.1.Introduction

$_SERVER est un tableau associatif[En savoir plus]. Il est disponible (sous cette forme) depuis PHP 4.1.
rem
  • Cette variable est également disponible lors de l'utilisation de PHP en ligne de commande (on pensera alors $_SERVER comme serveur la machine et non serveur web)
Le contenu de cette variable est assez différent entre la version "ligne de commande" et la version "web". Comme champs communs, on ne trouve guère que
  • $_SERVER['REQUEST_TIME'] qui retourne la seconde (sous forme de secondes depuis Epoch) à laquelle le script a été lancé.
  • $_SERVER['REQUEST_TIME_FLOAT'] qui retourne la microseconde (sous forme de secondes depuis Epoch avec les microsecondes en décimales) à laquelle le script a été lancé.
Ou encore $_SERVER['PHP_SELF'], $_SERVER['SCRIPT_NAME'], $_SERVER['SCRIPT_FILENAME'] et $_SERVER['PATH_TRANSLATED'] qui tous indiquent le nom (et éventuellement le chemin) du script exécuté mais qui n'apportent guère de plus value par rapport à d'autres constantes ou variables par ailleurs disponibles.

4.3.3.2.2.PHP en ligne de commande

Avec PHP exécuté en ligne de commande, $_SERVER pourra être intéressant dans la mesure où généralement, dans ce contexte, il contient les variables d'environnement du serveur (telles qu'elles étaient positionnées au moment du lancement du script).
Ce qui peut éventuellement permettre de déterminer le login de l'utilisateur, sa langue préférée et s'il utilise un proxy (pour peu que ces variables d'environnement soient positionnées)
Bonjour <?php echo (array_key_exists('USER', $_SERVER)?$_SERVER['USER']:'(inconnu)')."\n";?>
Votre "locale" est : <?php echo (array_key_exists('LANG', $_SERVER)?
                            $_SERVER['LANG']:'(une langue indéterminée)')."\n";?>
Vous utilisez un proxy?: <?php echo ((   array_key_exists('HTTP_PROXY', $_SERVER)
                                      && (strlen($_SERVER['HTTP_PROXY'])) > 0)?
                                'oui':'non (ou non déclaré)')."\n";?>
En dehors des variables d'environnement (et des rares infos communes avec l'environnement web) on ne trouvera rien d'intéressant.

4.3.3.2.3.PHP pour le web

Dans le cadre d'une application web, $_SERVER pourrait ne pas contenir les variables d'environnement (telles qu'elles étaient positionnées au moment du lancement du serveur web). Tout dépend du bon vouloir du serveur web. En revanche, il contient généralement bon nombre d'informations tant sur le serveur web que sur le visiteur du site (son navigateur, son IP, etc.) que nous détaillons dans le chapitre consacrés aux variables prédéfinies dans un contexte web[où?].

4.3.3.3.$_FILES, $_GET, $_POST

Les variables $_FILES, $_GET et $_POST sont plus spécifiquement associés à un contexte web (et plus particulièrement aux formulaires) nous les verrons donc le chapitre dédié[où?].

4.3.3.4.$_COOKIE, $_SESSION

Les variables $_COOKIE et $_SESSION sont plus spécifiquement associés à un contexte web (et plus particulièrement au stockage temporaire d'information) nous les verrons donc le chapitre dédié[où?].