SunshinePHP Developer Conference 2015

$_ENV

$HTTP_ENV_VARS [veraltet, nicht empfohlen]

(PHP 4 >= 4.1.0, PHP 5)

$_ENV -- $HTTP_ENV_VARS [veraltet, nicht empfohlen]Umgebungsvariablen

Beschreibung

Ein assoziatives Array von Variablen, die dem aktuellen Skript mittels der Environment-Methode übergeben werden.

Die Variablen werden aus der Laufzeitumgebung, unter der der PHP-Parser läuft, in PHPs globalen Namespace importiert. Die meisten Werte werden von der Shell, unter der PHP läuft, unterstützt, da es aber die unterschiedlichsten Systeme mit unterschiedlichsten Shells gibt, ist es unmöglich, eine definitive Liste aller verfügbaren Werte zu erstellen. Bitte konsultieren Sie die Dokumentation Ihrer Shell, um eine Liste aller definierten Umgebungsvariablen zu erhalten.

Andere Umgebungsvariablen enthalten die CGI-Variablen, die unabhängig davon eingefügt werden, ob PHP als Servermodul oder CGI-Prozess läuft.

$HTTP_ENV_VARS enthält anfangs die selben Informationen, ist aber kein Superglobal. (Beachten Sie, dass $HTTP_ENV_VARS und $_ENV unterschiedliche Variablen sind und von PHP daher entsprechend behandelt werden.)

Changelog

Version Beschreibung
4.1.0 Einführung von $_ENV als Ablösung des bis dahin existierenden $HTTP_ENV_VARS.

Beispiele

Beispiel #1 $_ENV-Beispiel

<?php
echo 'My username is ' .$_ENV["USER"] . '!';
?>

Angenommen "bjori" führt das Skript aus

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

My username is bjori!

Anmerkungen

Hinweis:

Dies ist eine 'Superglobale' oder automatisch globale Variable. Dies bedeutet, dass sie innerhalb des Skripts in jedem Geltungsbereich sichtbar ist. Es ist nicht nötig, sie mit global $variable bekannt zu machen, um aus Funktionen oder Methoden darauf zuzugreifen.

Siehe auch

add a note add a note

User Contributed Notes 6 notes

up
12
gabe-php at mudbugmedia dot com
4 years ago
If your $_ENV array is mysteriously empty, but you still see the variables when calling getenv() or in your phpinfo(), check your http://us.php.net/manual/en/ini.core.php#ini.variables-order ini setting to ensure it includes "E" in the string.
up
6
david at davidfavor dot com
2 years ago
Comments for this page seem to indicate getenv() returns environment variables in all cases.

For getenv() to work, php.ini variables_order must contain 'E'.
up
5
anonymous
4 years ago
If $_ENV is empty because variables_order does not include it, it will be filled with values fetched by getenv().

For example, when calling getenv("REMOTE_ADDR"), $_ENV['REMOTE_ADDR'] will be defined as well (if such an environment variable exists).
up
6
ewilde aht bsmdevelopment dawt com
5 years ago
When running a PHP program under the command line, the $_SERVER["SERVER_NAME"] variable does not contain the hostname. However, the following works for me under Unix/Linux and Windows:

<?php
if (isset($_ENV["HOSTNAME"]))
   
$MachineName = $_ENV["HOSTNAME"];
else if  (isset(
$_ENV["COMPUTERNAME"]))
   
$MachineName = $_ENV["COMPUTERNAME"];
else
$MachineName = "";
?>
up
5
php at isnoop dot net
4 years ago
If you wish to define an environment variable in your Apache vhost file, use the directive SetEnv.

SetEnv varname "variable value"

It is important to note that this new variable will appear in $_SERVER, not $_ENV.
up
1
aasasdasdf at yandex dot ru
6 months ago
Please note that writing to $_ENV does not actually set an environment variable, i.e. the variable will not propagate to any child processes you launch (except forked script processes, in which case it's just a variable in the script's memory). To set real environment variables, you must use putenv().

Basically, setting a variable in $_ENV does not have any meaning besides setting or overriding a script-wide global variable. Thus, one should never modify $_ENV except for testing purposes (and then be careful to use putenv() too, if appropriate).

PHP  will not trigger any kind of error or notice when writing to $_ENV.
To Top