Maison > développement back-end > tutoriel php > Pourquoi les variables SetEnv sont-elles accessibles à la fois dans $_ENV et $_SERVER en PHP ?

Pourquoi les variables SetEnv sont-elles accessibles à la fois dans $_ENV et $_SERVER en PHP ?

Patricia Arquette
Libérer: 2024-11-08 07:57:02
original
960 Les gens l'ont consulté

Why are SetEnv variables accessible in both $_ENV and $_SERVER in PHP?

Variables d'environnement en PHP : comprendre SetEnv, $_ENV et $_SERVER

Dans Apache, la variable d'environnement FOO est définie à l'aide de SetEnv directive dans le fichier .htaccess. Cependant, PHP peut afficher cette variable soit dans $_ENV, soit dans $_SERVER. Pourquoi cela se produit-il et qu'est-ce qui cause les entrées complexes dans $_SERVER ?

Variable $_ENV vide

Par défaut, la variable $_ENV de PHP reste vide à moins que la directive variables_order dans php.ini inclut E. Ceci n'est généralement pas activé dans les environnements de production en raison de problèmes de performances. Pour résoudre ce problème, définissez variables_order sur EGPCS, ce qui rend $_ENV accessible.

SetEnv dans $_SERVER

Une confusion survient lors de l'utilisation de SetEnv dans .htaccess, car il place le variable dans $_SERVER, pas $_ENV. Ce comportement n'est pas intuitif et peut provoquer des malentendus.

Les entrées dans $_SERVER

SetEnv peuvent entraîner des entrées en double dans $_SERVER, telles que [REDIRECT_FOO] et [FOO ]. Cela se produit car SetEnv crée une variable d'environnement régulière (FOO) et un alias de redirection (REDIRECT_FOO`).

Alternative à la fonction getenv

La fonction getenv est toujours disponible pour la récupération variables d'environnement, quels que soient les paramètres PHP pour $_ENV. Il est recommandé d'utiliser getenv si vous rencontrez des problèmes avec $_ENV.

Notes supplémentaires

  • getenv ne respecte pas la casse pour les noms de variables d'environnement.
  • variables_order affecte l'ordre des variables dans $_SERVER et $_ENV, pas le comportement de getenv.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal