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
1012 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!

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