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