PHP stellt eine große Anzahl vordefinierter Variablen zur Verfügung. Eine ausführliche Dokumentation ist nicht verfügbar, da viele Variablen unter anderem von der Version und den Einstellungen des laufenden Servers abhängen. Einige vordefinierte Variablen werden nicht wirksam, wenn PHP über die Befehlszeile ausgeführt wird.
Warnung
In PHP 4.2.0 und nachfolgenden Versionen ist der Standardwert der PHP-Direktive register_globals deaktiviert. Dies ist eine wesentliche Änderung an PHP. Wenn Sie register_globals auf „off“ setzen, wirkt sich dies auf die globale Verfügbarkeit des vordefinierten Satzes von Variablen aus. Um beispielsweise den Wert von DOCUMENT_ROOT zu erhalten, müssten Sie $_SERVER['DOCUMENT_ROOT'] anstelle von $DOCUMENT_ROOT verwenden. Ein anderes Beispiel: Verwenden Sie $_GET['id'] anstelle von $id aus der URL http://www .example.com/test Rufen Sie den ID-Wert in .php?id=3 ab oder verwenden Sie $_ENV['HOME'] anstelle von $HOME, um den Wert der Umgebungsvariablen HOME abzurufen.
Am besten ist es, wenn in PHP vordefinierte Variablen verfügbar sind, z. B. superglobale Arrays.
Ab PHP 4.1.0 stellt PHP einen zusätzlichen Satz vorgegebener Array-Variablen bereit, die Daten vom Webserver (falls verfügbar), der Laufzeitumgebung und Benutzereingaben enthalten. Das Besondere an diesen Arrays ist, dass sie automatisch global gültig sind, also automatisch in jedem Gültigkeitsbereich. Daher werden sie oft als Autoglobale oder Superglobale bezeichnet. (Es gibt keinen Mechanismus für benutzerdefinierte superglobale Variablen in PHP.) Superglobale Variablen sind unten aufgeführt, aber für ihren Inhalt und eine weitere Diskussion der vordefinierten Variablen von PHP und ihrer Natur siehe Vordefinierte Variablen; Darüber hinaus werden Sie auch feststellen, dass die alten vordefinierten Arrays ($HTTP_*_VARS) noch vorhanden sind. Ab PHP 5.0.0 können vordefinierte PHP-Variablenarrays vom langen Typ mit der Einstellungsoption register_long_arrays deaktiviert werden.
Hinweis: Veränderliche Variablen
Superglobale Variablen können nicht als veränderliche Variablen in Funktionen oder Klassenmethoden verwendet werden.
Hinweis:
Obwohl superglobale Variablen und HTTP_*_VARS gleichzeitig existieren, handelt es sich nicht um dieselbe Variable, sodass eine Änderung des Werts der einen keine Auswirkungen auf die andere hat.
Wenn einige Variablen in variables_order nicht festgelegt sind, sind auch die entsprechenden vordefinierten PHP-Arrays leer.