Lorsque l'on travaille avec PHP et Apache, on peut rencontrer une situation déroutante où le tableau superglobal $_ENV reste vide malgré la définition des variables d'environnement dans le fichier .htaccess. Cet article examine les raisons de ce comportement et offre un aperçu des bizarreries des variables d'environnement dans Apache et PHP.
Contrairement à d'autres superglobales (par exemple, $_GET, $_POST), $_ENV n'est pas automatiquement renseigné par PHP. Cela nécessite une configuration explicite dans le fichier php.ini. La directive variables_order détermine quels tableaux superglobaux sont initialisés au démarrage de PHP et, par défaut, elle exclut $_ENV.
Pour activer $_ENV, il faut modifier le paramètre variables_order dans php.ini ou dans le fichier .htaccess. Le définir sur "EGPCS" ou "GPCS" inclut $_ENV dans le processus de remplissage.
Lors de l'utilisation de SetEnv dans .htaccess, le les variables d'environnement se retrouvent dans $_SERVER, pas dans $_ENV. Cet écart peut être attribué à la manière dont Apache gère les variables d'environnement. Il les stocke dans des structures internes qui sont ensuite mises à disposition des scripts PHP. Pour des raisons héritées, SetEnv stocke les variables dans un emplacement auquel $_SERVER accède.
La duplication des variables d'environnement dans $_SERVER est un artefact du comportement d'Apache. Lorsque SetEnv est utilisé dans .htaccess, la valeur précédente de la variable d'environnement n'est pas écrasée mais ajoutée en tant qu'autre entrée avec une clé différente, préfixée par REDIRECT_. Il s'agit d'une bizarrerie historique d'Apache, où la modification des variables d'environnement pendant le traitement de la demande était prise en charge en ajoutant la variable modifiée à l'ensemble des variables d'environnement.
Même si $_ENV peut ne pas toujours être renseigné, il existe d'autres moyens d'accéder aux variables d'environnement en PHP. La fonction getenv() récupère les variables d'environnement directement depuis le système d'exploitation, quelle que soit la configuration PHP ou l'emplacement des variables d'environnement dans les structures Apache. Il permet la récupération des variables sans tenir compte de la casse, ce qui en fait une alternative pour accéder aux variables stockées dans $_SERVER.
Comprendre les subtilités des variables d'environnement dans Apache et PHP est crucial pour résoudre les problèmes et travailler efficacement avec ces variables. Le vide de $_ENV peut être résolu en configurant le paramètre variables_order, et le comportement non conventionnel de SetEnv peut être pris en compte en utilisant $_SERVER ou getenv(). En comprenant ces concepts, les développeurs peuvent exploiter la puissance des variables d'environnement pour améliorer leurs applications PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!