Heim > Artikel > Backend-Entwicklung > Warum sind SetEnv-Variablen sowohl in $_ENV als auch in $_SERVER in PHP zugänglich?
Umgebungsvariablen in PHP: SetEnv, $_ENV und $_SERVER verstehen
In Apache wird die Umgebungsvariable FOO mithilfe von SetEnv festgelegt Direktive in der .htaccess-Datei. PHP kann diese Variable jedoch entweder in $_ENV oder $_SERVER anzeigen. Warum passiert das und was verursacht die komplexen Einträge in $_SERVER?
Leere $_ENV-Variable
Standardmäßig bleibt die $_ENV-Variable von PHP leer, es sei denn, die Variable_order-Direktive wird verwendet in php.ini enthält E. Dies ist in Produktionsumgebungen aus Leistungsgründen normalerweise nicht aktiviert. Um dieses Problem zu beheben, setzen Sie variables_order auf EGPCS, wodurch $_ENV zugänglich gemacht wird.
SetEnv in $_SERVER
Verwirrung entsteht bei der Verwendung von SetEnv in .htaccess, da es das platziert Variable in $_SERVER, nicht in $_ENV. Dieses Verhalten ist nicht intuitiv und kann zu Missverständnissen führen.
Einträge in $_SERVER
SetEnv kann zu doppelten Einträgen in $_SERVER führen, z. B. [REDIRECT_FOO] und [FOO ]. Dies geschieht, weil SetEnv eine reguläre Umgebungsvariable (FOO) und einen Umleitungsalias (REDIRECT_FOO`) erstellt.
getenv-Funktionsalternative
Die getenv-Funktion steht immer zum Abrufen zur Verfügung Umgebungsvariablen, unabhängig von den PHP-Einstellungen für $_ENV. Es wird empfohlen, getenv zu verwenden, wenn Probleme mit $_ENV auftreten.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWarum sind SetEnv-Variablen sowohl in $_ENV als auch in $_SERVER in PHP zugänglich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!