$_ENV

$HTTP_ENV_VARS [przestarzałe]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_ENV -- $HTTP_ENV_VARS [przestarzałe]Zmienne środowiskowe

Opis

Asocjacyjna tablica (array) zmiennych przekazanych do obecnego skryptu przez zmienne środowiskowe.

Te zmienne są importowane do globalnej przestrzeni nazw PHP ze środowiska, w którym uruchamiany jest parser PHP. Wiele z nich jest tworzonych przez shell, pod którym uruchamiany jest PHP; różne systemsy korzystają z rożnych rodzajów shella, tak więc stworzenie kompletnej listy jest niemożliwe. Zobacz dokumentację Twojego shella, aby uzyskać listę definiowanych zmiennych środowiskowych.

Do innych zmiennych środowiskowych zaliczają się zmienne CGI, umieszczane tam niezależnie od tego czy PHP jest uruchamiany jako moduł serwera, czy procesor CGI.

$HTTP_ENV_VARS zawiera pewne informacje początkowe, ale nie jest zmienną superglobalną (zauważ, że PHP traktuje $HTTP_ENV_VARS i $_ENV są jak dwie osobne zmienne),

Rejestr zmian

Wersja Opis
4.1.0 Wprowadzono $_ENV; zdeprecjonowano $HTTP_ENV_VARS.

Przykłady

Przykład #1 Przykład użycia $_ENV

<?php
echo 'Moja nazwa użytkownika to ' .$_ENV["USER"] . '!';
?>

Zakładając, że ten skrypt wykonuje "Sobak"

Powyższy przykład wyświetli coś podobnego do:

Moja nazwa użytkownika to Sobak!

Notatki

Informacja:

To jest zmienna "superglobalna" lub automatycznie ustawiona na globalną. To po prostu oznacza, że jest dostępna w każdym miejscu skryptu. Nie jest konieczne użycie global $zmienna; aby mieć do niej dostęp w funkcjach i metodach.

Zobacz też:

add a note add a note

User Contributed Notes 9 notes

up
123
gabe-php at mudbugmedia dot com
13 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
11
david at davidfavor dot com
12 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
6
aasasdasdf at yandex dot ru
10 years 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.
up
5
anonymous
13 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
4
php at isnoop dot net
14 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
-3
Tit Petric
6 years ago
If you're using php-fpm you might want to set `clean_env = no`. This setting cleans the environment variables by default, meaning that PHP would be started with a clean environment.
up
-5
kobenews at cox dot net
6 years ago
If running php-fpm with the default production variables_order = GPCS, $_ENV will always be an empty array. Instead of reading the superglobal $_ENV use the built-in function getenv() or read from $_SERVER['ENV-KEY-HERE'].
up
-13
Guy
6 years ago
@Tit Petric - I believe you meant: clear_env=no

not clean_env

Set the above in your PHP-FPM config to prevent clearing ENV vars
up
-62
ewilde aht bsmdevelopment dawt com
15 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 = "";
?>
To Top