Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sind SetEnv-Variablen sowohl in $_ENV als auch in $_SERVER in PHP zugänglich?

Warum sind SetEnv-Variablen sowohl in $_ENV als auch in $_SERVER in PHP zugänglich?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 07:57:02868Durchsuche

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

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

  • getenv unterscheidet bei Namen von Umgebungsvariablen nicht zwischen Groß- und Kleinschreibung.
  • variables_order beeinflusst die Reihenfolge der Variablen in $_SERVER und $_ENV, nicht das Verhalten von getenv.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn