PHP Handbuch
Zurück | Anhang H. Reservierte Wörter in PHP | Nach vorne

# Vordefinierte Variablen

Seit PHP 4.1.0 wird empfohlen, externe Variablen über die Superglobals, die weiter unten beschrieben werden, abzufragen. Davor war man entweder auf die register_globals -Einstelliung oder die Langformen der vordefinierten PHP-Arrays (`$HTTP_*_VARS`) angewiesen. As of PHP 5.0.0, the long PHP predefined variable arrays may be disabled with the register_long_arrays directive.

## Server Variablen: `$_SERVER`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie stattdessen `$HTTP_SERVER_VARS`.

`$_SERVER` ist ein Array, in dem Informationen über Header, Pfade oder den Speicherort des Skripts gespeichert sind. Die Einträge dieses Arrays werden vom Webserver generiert. Es gibt keine Garantie, dass jeder Webserver alle diese Einträge erzeugt. Manche Server werden Einträge auslassen oder andere einfügen, die hier nicht aufgeführt sind. Ein grosser Teil dieser Variablen stammt aus der CGI 1.1 Spezifikation.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_SERVER; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_SERVER_VARS` notwendig ist.

`$HTTP_SERVER_VARS` enthält dieselben Informationen ist aber nicht automatisch global. (Beachten Sie, dass `$HTTP_SERVER_VARS` und `$_SERVER` verschiedene Variablen sind, die von PHP auch so behandelt werden.)

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_SERVER` und `$HTTP_SERVER_VARS` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

Möglicherweise finden Sie das eine oder andere der folgenden Elemente nicht in `$_SERVER`. Beachten Sie, dass nur wenige, falls überhaupt, verfügbar sind (oder von Bedeutung sind) wenn sie PHP auf der Kommandozeile betreiben.

'`PHP_SELF`'

  Der Name des aktuell ausgeführten Skripts, relativ zum Wurzelverzeichnis des Servers. Zum Beispiel gibt `$_SERVER['PHP_SELF']` in einem Skript mit der Adresse `http://example.com/test.php/foo.bar` den Namen `/test.php/foo.bar` zurück.

  Falls PHP auf der Kommandozeile ausgeführt wird, ist diese Variable nicht verfügbar.

'`argv`'

  In diesem Array sind die Argumente enthalten, die an ein Skript übergeben wurden. Wenn das Skript auf der Kommandozeile ausgeführt wird, haben Sie einen C-ähnlichen Zugriff auf die Kommandozeilenparameter. Wenn es mit der GET-Methode aufgerufen wird, enthält das Array den Abfragestring.

'`argc`'

  Enthält die Anzahl der Kommandozeilenparameter, die an das Skript übergeben wurden (falls es von der Kommandozeile aus aufgerufen wurde).

'`GATEWAY_INTERFACE`'

  Gibt an, welche Version der CGI Spezifikation der Server benutzt, beispielsweise '`CGI/1.1`'.

'`SERVER_NAME`'

  Der Name des Server Hosts unter dem das aktuelle Skript ausgeführt wird. Falls das Skript unter einem virtuellen Host läuft, wird der Name, der für diesen virtuellen Host vergeben wurde, angezeigt.

'`SERVER_SOFTWARE`'

  Die Identifikation des Servers, mit der sich ein Server im Header bei der Beantwortung einer Anforderung identifiziert.

'`SERVER_PROTOCOL`'

  Name und Versionsnummer des Protokolls, über das die Seite angefordert wurde. Z. B. '`HTTP/1.0`';

'`REQUEST_METHOD`'

  Welche Anforderungsmethode benutzt wurde, um auf die Seite zuzugreifen, z. B. '`GET`', '`HEAD`', '`POST`', '`PUT`'.

'`QUERY_STRING`'

  Der Abfragestring, falls vorhanden, mit dem die Seite angefordert wurde.

'`DOCUMENT_ROOT`'

  Das Wurzelverzeichnis des Webservers, unter dem das aktuelle Skript ausgeführt wird, so wie es in der Konfigurationsdatei des Webservers hinterlegt ist.

'`HTTP_ACCEPT`'

  Der Inhalt des `Accept:`-Headers der aktuellen Anforderung, falls dieser Header vorhanden ist.

'`HTTP_ACCEPT_CHARSET`'

  Der Inhalt des `Accept-Charset:`-Headers der aktuellen Anforderung, so vorhanden. Z. B. '`iso-8859-1,*,utf-8`'.

'`HTTP_ACCEPT_ENCODING`'

  Der Inhalt des `Accept-Encoding:`-Headers der aktuellen Anforderung, so vorhanden. Beispiel: '`gzip`'.

'`HTTP_ACCEPT_LANGUAGE`'

  Der Inhalt des `Accept-Language:`-Headers der aktuellen Anforderung, so vorhanden. Beispiel: '`en`'.

'`HTTP_CONNECTION`'

  Der Inhalt des `Connection:`-Headers der aktuellen anforderung, so vorhanden. Beispiel: '`Keep-Alive`'.

'`HTTP_HOST`'

  Der Inhalt des `Host:`-Headers der aktuellen Anforderung, so vorhanden.

'`HTTP_REFERER`'

  Die Adresse der Seite (falls es eine gibt), die den Browser auf die aktuelle Seite verwies. Dieser Header wird vom Browser gesetzt, aber nicht von allen. Einige Browser bieten die Möglichkeit, den `HTTP_REFERER` zu modifizieren. Kurz, auf diesen Header kann man sich nicht verlassen.

'`HTTP_USER_AGENT`'

  Der Inhalt des `User_Agent:`-Headers der aktuellen Anforderung, so vorhanden. Dies ist ein String, der den Typ und Namen des Browsers angibt, der auf die Seite zugreift. Ein typisches Beispiel ist: `Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)`. Unter anderem kann man diesen Wert mit get_browser() auslesen, um die Ausgabe einer Seite auf den verwendeten Browser abzustimmen.

'`REMOTE_ADDR`'

  Die IP-Adresse des Rechners, der die aktuelle Seite angefordert hat.

'`REMOTE_HOST`'

  Der Hostname des Servers, von dem die aktuelle Seite geladen wurde. Der reverse dns lookup basiert auf dem `REMOTE_ADDR`-Header.

  > Anmerkung: Um diese Variable zu erzeugen, muss Ihr Webserver entsprechend eingestellt sein. Zum Beispiel muss beim Apache `HostnameLookups On` in der `httpd.conf` aktiv sein. Siehe auch unter gethostbyaddr().

'`REMOTE_PORT`'

  Der Port, Über den der Rechner des Benutzers mit dem Webserver kommuniziert.

'`SCRIPT_FILENAME`'

  Der absolute Pfadname des aktuell ausgeführten Skripts.

  > Anmerkung: Falls das Skript auf der Kommandozeile mit einem relativen Pfad aufgerufen wird, wie z. B. `file.php` oder `../file.php`, enthält `$_SERVER['SCRIPT_FILENAME']` den relativen Pfad, den der Benutzer angegeben hat.

'`SERVER_ADMIN`'

  Der Wert, der in der Server Konfiguration der Direktive SERVER_ADMIN (bei Apache) zugewiesen wurde. Falls das Skript unter einem virtuellen Host läuft, wird der Wert angegeben, der für diesen virtuellen Host angegeben wurde.

'`SERVER_PORT`'

  Der Port, den der Server zur Kommunikation benutzt. Bei Standardinstallationen ist dies der Port '`80`'. Bei Verwendung von SSH ändert sich der Wert zu Ihrem definierten SSH Port.

'`SERVER_SIGNATURE`'

  Ein String, der bei Seiten, die vom Server generiert wurden, die Server Version und den Namen des virtuellen Hosts enthält, falls diese Option aktiviert ist.

'`PATH_TRANSLATED`'

  Der Pfad zur aktuellen Datei im Dateisystem (nicht relativ zum Wurzelverzeichnis des Webserbers), nachdem der Server eventuelle Umwandlungen vom virtuellen ins reale System vorgenommen hat.

'`SCRIPT_NAME`'

  Enthält den Pfad des aktuellen Skripts. Das ist nützlich für Programme, die sich selber referenzieren.

'`REQUEST_URI`'

  Der URI mit dem diese Seite aufgerufen wurde. Z. B. '`/index.html`'.

'`PHP_AUTH_USER`'

  Wenn HTTP-Authentifizierung mit Apache als Modul benutzt wird, enthält diese Variable den Benutzernamen, der vom Anwender angegeben wurde.

'`PHP_AUTH_PW`'

  Wenn HTTP-Authentifizierung mit Apache als Modul benutzt wird, enthält diese Variable das Passwort, das vom Anwender angegeben wurde.

'`AUTH_TYPE`'

  Wenn HTTP-Authentifizierung mit Apache als Modul benutzt wird, enthält diese Variable den Authentifizierungs-Typ.

## Umgebungsvariablen: `$_ENV`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array `$HTTP_ENV_VARS`.

Diese Variablen werden aus der Systemumgebung, in der der Parser läuft in den globalen Namensraum Von PHP importiert. Viele davon werden vom System generiert, unter dem der Parser läuft und unterschiedliche Systeme benutzen unterschiedliche Umgebungsvariablen. Eine verbindliche Liste anzugeben ist daher unmöglich. Schauen Sie in der Dokumentation Ihres Systems nach den dort definierten Umgebungsvaraiblen.

Andere Umgebungsvariablen einschließlich der CGI-Variablen, sind hier aufgeführt, egal ob PHP als Servermodul oder CGI Prozess läuft.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_ENV; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_ENV_VARS` notwendig ist.

`$HTTP_ENV_VARS` enthält dieselben Informationen ist aber nicht automatisch global. (Beachten Sie, dass `$HTTP_ENV_VARS` und `$_ENV` verschiedene Variablen sind, die von PHP auch so behandelt werden.)

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_ENV` und `$HTTP_ENV_VARS` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## HTTP Cookies: `$_COOKIE`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array `$HTTP_COOKIE_VARS`.

Ein assoziatives Array mit Variablen, das an das aktuelle Skript mit HTTP-Cookies übergeben wurde. Es ist automatisch global in allen Gültigkeitsbereichen.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_COOKIE; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_COOKIE_VARS` notwendig ist.

`$HTTP_COOKIE_VARS` contains the same initial information, but is not an autoglobal. (Note that `HTTP_COOKIE_VARS` and `$_COOKIE` are different variables and that PHP handles them as such)

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_COOKIE` und `$HTTP_COOKIE_VARS` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## HTTP GET Variablen: `$_GET`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array `$HTTP_GET_VARS`.

Ein assoziatives Array mit Variablen, das an das aktuelle Skript mit der GET-Methode übergeben wurde. Es ist automatisch global in allen Gültigkeitsbereichen.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_GET; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_GET_VARS` notwendig ist.

`$HTTP_GET_VARS` enthält dieselben Informationen ist aber nicht automatisch global. (Beachten Sie, dass `$HTTP_GET_VARS` und `$_GET` verschiedene Variablen sind, die von PHP auch so behandelt werden.)

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_GET` und `$HTTP_GET_VARS` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## HTTP POST Variablen: `$_POST`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array `$HTTP_POST_VARS`.

Ein assoziatives Array mit Variablen, das an das aktuelle Skript mit der POST-Methode übergeben wurde. Es ist automatisch global in allen Gültigkeitsbereichen.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_POST; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_POST_VARS` notwendig ist.

`$HTTP_POST_VARS` enthält dieselben Informationen ist aber nicht automatisch global. (Beachten Sie, dass `$HTTP_POST_VARS` und `$_POST` verschiedene Variablen sind, die von PHP auch so behandelt werden.)

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_POST` und `$HTTP_POST_VARS` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## Variablen für HTTP Dateiuploads: `$_FILES`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array `$HTTP_POST_FILES`.

Ein assoziatives Array mit Elementen, die in das aktuelle Skript mit der HTTP-POST-Methode hochgeladen wurden. Es ist automatisch global in allen Gültigkeitsbereichen.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_FILES; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_POST_FILES` notwendig ist.

`$HTTP_POST_FILES` enthält dieselben Informationen, ist aber nicht autoglobal.

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_FILES` und `$HTTP_POST_FILES` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## Variablen einer Anforderung: `$_REQUEST`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 neu eingeführt. Es gibt kein entsprechendes Array in älteren Versionen.

> Anmerkung: Vor der PHP Version 4.3.0 waren die Informationen des Arrays `$_FILES` auch im Array `$_REQUEST` enthalten.

Ein assoziatives Aray, das die Inhalte der Arrays `$_GET`, `$_POST` und `$_COOKIE` enthält.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_REQUEST; in Funktionen oder Methoden importieren, um darauf zuzugreifen.

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von dem Array `$_REQUEST`. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## Session Variablen: `$_SESSION`

> Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array `$HTTP_SESSION_VARS`.

Ein assoziatives Array, das die Sessionvariablen für das aktuelle Skript enthält. Mehr über die Verwendung dieses Arrays finden Sie bei der Dokumentation zu den Session Funktionen.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_SESSION; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei `$HTTP_SESSION_VARS` notwendig ist.

`$HTTP_SESSION_VARS` enthält dieselben Informationen, ist aber nicht automatisch global.

Falls die Direktive register_globals gesetzt ist, sind diese Variablen auch im globalen Sichbarkeitsbereich eines Skripts verfügbar, d.h., unabhängig von den `$_SESSION` und `$HTTP_SESSION_VARS` Arrays. Lesen Sie für weitere Informationen das Kapitel über Sicherheit Verwendung von Register Globals. Diese individuellen globalen Variablen sind nicht automatisch global.

## Globale Variablen: `$GLOBALS`

> Anmerkung: `$GLOBALS` steht seit PHP 3.0.0 zur Verfügung.

Ein assoziatives Array, das Referenzen zu allen Variablen, die gegenwärtig im globalen Gültigkeitsbereich des Skripts definiert sind. Die Variablennamen sind die Indizes dieses Arrays.

Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $GLOBALS; in Funktionen oder Methoden importieren, um darauf zuzugreifen.

## Die letzte Fehlermeldung: `$php_errormsg`

`$php_errormsg` ist eine Variable, die den Text der zuletzt aufgetretenen PHP Fehlermeldung enthält. Hierauf kann nur in dem Gültigkeitsbereich zugegriffen werden, in dem der Fehler auftrat, und nur dann, wenn die Direktive track_errors in der Konfiguration aktiviert ist (standardmäßig ist diese Direktive deaktiviert).

Zurück | Zum Anfang | Nach vorne
Reservierte Wörter in PHP | Nach oben | Vordefinierte Klassen