$_ENV is a superglobal variable in PHP. It is an associative array that stores all the environment variables available in the current script. $HTTP_ENV_VARS also contains the same information, but it is not a superglobal, and it has now been deprecated.
The environment variables are imported into the global namespace. Most of these variables are provided by the shell under which the PHP parser is running. Hence, the list of environment variables may be different on different platforms.
This array ($_ENV) also includes CGI variables in case PHP is running as a server module or a CGI processor.
We can use the foreach loop to display all the environment variables available −
<?php
foreach ($_ENV as $k=>$v)
echo $k . " => " . $v . "<br>";
?>
On a Windows OS and with XAMPP server, you may get the list of environment variables as follows −
Variable | Value |
---|---|
ALLUSERSPROFILE | C:\ProgramData |
APPDATA | C:\Users\user\AppData\Roaming |
CommonProgramFiles | C:\Program Files\Common Files |
CommonProgramFiles(x86) | C:\Program Files (x86)\Common Files |
CommonProgramW6432 | C:\Program Files\Common Files |
COMPUTERNAME | GNVBGL3 |
ComSpec | C:\WINDOWS\system32\cmd.exe |
DriverData | C:\Windows\System32\Drivers\DriverData |
HOMEDRIVE | C − |
HOMEPATH | \Users\user |
LOCALAPPDATA | C:\Users\user\AppData\Local |
LOGONSERVER | \\GNVBGL3 |
MOZ_PLUGIN_PATH | C:\Program Files (x86)\ Foxit Software\ Foxit PDF Reader\plugins\ |
NUMBER_OF_PROCESSORS | 8 |
OneDrive | C:\Users\user\OneDrive |
OneDriveConsumer | C:\Users\user\OneDrive |
OS | Windows_NT |
Path | C:\Python311\Scripts\;C:\Python311\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\ v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\xampp\php;C:\Users\user\AppData\Local\Microsoft\ WindowsApps;C:\VSCode\Microsoft VS Code\bin |
PATHEXT | .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE; .WSF;.WSH;.MSC;.PY;.PYW |
PROCESSOR_ARCHITECTURE | AMD64 |
PROCESSOR_IDENTIFIER | Intel64 Family 6 Model 140 Stepping 1, GenuineIntel |
PROCESSOR_LEVEL | 6 |
PROCESSOR_REVISION | 8c01 |
ProgramData | C:\ProgramData |
ProgramFiles | C:\Program Files |
ProgramFiles(x86) | C:\Program Files (x86) |
ProgramW6432 | C:\Program Files |
PSModulePath | C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\ Modules |
PUBLIC | C:\Users\Public |
SystemDrive | C − |
SystemRoot | C:\WINDOWS |
TEMP | C:\Users\user\AppData\Local\Temp |
TMP | C:\Users\user\AppData\Local\Temp |
USERDOMAIN | GNVBGL3 |
USERDOMAIN_ROAMINGPROFILE | GNVBGL3 |
USERNAME | user |
USERPROFILE | C:\Users\user |
windir | C:\WINDOWS |
ZES_ENABLE_SYSMAN | 1 |
__COMPAT_LAYER | RunAsAdmin Installer |
AP_PARENT_PID | 10608 |
You can access the value of individual environment variable too. This code fetches the PATH environment variable −
<?php
echo "Path: " . $_ENV['Path'];
?>
It will produce the following output −
Path:
C:\Python311\Scripts\;C:\Python311\;C:\WINDOWS\system32;
C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\WINDOWS\System32\OpenSSH\;C:\xampp\php;
C:\Users\mlath\AppData\Local\Microsoft\WindowsApps;
C:\VSCode\Microsoft VS Code\bin
Note − The $_ENV array may yield empty result, depending on “php.ini” setting “variables_order”. You may have to edit the “php.ini” file and set variables_order=”EGPCS” instead of variables_order=”GPCS” value.
The getenv() Function
The PHP library provides the getenv() function to retrieve the list of all the environment variables or the value of a specific environment variable.
The following script displays the values of all the available environment variables −
<?php
$arr=getenv();
foreach ($arr as $key=>$val)
echo "$key=>$val";
?>
To obtain the value of a specific variable, use its name as the argument for the getenv() function −
<?php
echo "Path: " . getenv("PATH");
?>
The putenv() Function
PHP also provides the putenv() function to create a new environment variable. The environment variable will only exist for the duration of the current request.
Changing the value of certain environment variables should be avoided. By default, users will only be able to set the environment variables that begin with “PHP_” (e.g. PHP_FOO=BAR).
The “safe_mode_protected_env_vars” directive in “php.ini” contains a comma-delimited list of environment variables that the end user won’t be able to change using putenv().
Open Compiler
<?php
putenv("PHP_TEMPUSER=GUEST");
echo "Temp user: " . getenv("PHP_TEMPUSER");
?>
The browser will display the following output −
Temp user: GUEST
Leave a Reply