Maison >développement back-end >tutoriel php >Pourquoi mon tableau $_ENV est-il vide et pourquoi les variables d'environnement apparaissent-elles dans $_SERVER ?

Pourquoi mon tableau $_ENV est-il vide et pourquoi les variables d'environnement apparaissent-elles dans $_SERVER ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-08 09:45:02886parcourir

Why is my $_ENV array empty and why are environment variables appearing in $_SERVER?

Pourquoi une variable $_ENV vide et des apparitions mystérieuses de $_SERVER ?

Dans ce problème PHP déroutant, les utilisateurs rencontrent un tableau $_ENV vide malgré définir des variables d'environnement dans leur fichier .htaccess. De plus, les variables apparaissent inexplicablement dans le tableau $_SERVER d'une manière apparemment dupliquée.

Racine du problème :

  1. $ _ENV est masqué par défaut :

    • directive variables_order de php.ini, généralement défini sur « GPCS », exclut « E » (ENV) par défaut. La modification de ce paramètre en "EGPCS" active $_ENV.
  2. Les variables SetEnv atterrissent dans $_SERVER :

    • Définition de l'environnement les variables utilisant SetEnv dans .htaccess les placent dans le tableau $_SERVER, pas dans $_ENV.

La mystérieuse duplication :

  • Les variables apparaissent deux fois dans $_SERVER ([REDIRECT_FOO] et [ FOO]), car Apache préfixe le nom de la variable d'origine avec REDIRECT_ si elle provient du environnement.

Solution alternative :

  • La fonction getenv() n'est pas affectée par le paramètre php.ini et renvoie toujours la valeur correcte, quel que soit de cas sensibilité.

Résumé :

Comprendre ces paramètres et ces différences de comportement permet de percer le mystère de la raison pour laquelle $_ENV peut être vide et pourquoi les variables d'environnement se retrouvent dans $ _SERVEUR. N'oubliez pas de modifier variables_order si vous avez besoin de remplir $_ENV et d'utiliser getenv() pour une récupération fiable des variables d'environnement.

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:
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