Maison > développement back-end > tutoriel php > Pourquoi mon tableau $_ENV est-il vide en PHP, même si je définis des variables d'environnement dans .htaccess ?

Pourquoi mon tableau $_ENV est-il vide en PHP, même si je définis des variables d'environnement dans .htaccess ?

DDD
Libérer: 2024-11-08 17:32:02
original
298 Les gens l'ont consulté

Why is My $_ENV Array Empty in PHP, Even Though I Set Environment Variables in .htaccess?

Plonger dans l'énigmatique $_ENV : comprendre son vide et sa duplication

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.

Pourquoi $_ENV est-il vide ?

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.

Pourquoi SetEnv apparaît-il dans $_SERVER et non dans $_ENV ?

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.

Entrées dupliquées dans $_SERVER

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.

Alternatives à l'accès aux 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.

Conclusion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal