$_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 −

VariableValue
ALLUSERSPROFILEC:\ProgramData
APPDATAC:\Users\user\AppData\Roaming
CommonProgramFilesC:\Program Files\Common Files
CommonProgramFiles(x86)C:\Program Files (x86)\Common Files
CommonProgramW6432C:\Program Files\Common Files
COMPUTERNAMEGNVBGL3
ComSpecC:\WINDOWS\system32\cmd.exe
DriverDataC:\Windows\System32\Drivers\DriverData
HOMEDRIVEC −
HOMEPATH\Users\user
LOCALAPPDATAC:\Users\user\AppData\Local
LOGONSERVER\\GNVBGL3
MOZ_PLUGIN_PATHC:\Program Files (x86)\ Foxit Software\ Foxit PDF Reader\plugins\
NUMBER_OF_PROCESSORS8
OneDriveC:\Users\user\OneDrive
OneDriveConsumerC:\Users\user\OneDrive
OSWindows_NT
PathC:\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_ARCHITECTUREAMD64
PROCESSOR_IDENTIFIERIntel64 Family 6 Model 140 Stepping 1, GenuineIntel
PROCESSOR_LEVEL6
PROCESSOR_REVISION8c01
ProgramDataC:\ProgramData
ProgramFilesC:\Program Files
ProgramFiles(x86)C:\Program Files (x86)
ProgramW6432C:\Program Files
PSModulePathC:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\ Modules
PUBLICC:\Users\Public
SystemDriveC −
SystemRootC:\WINDOWS
TEMPC:\Users\user\AppData\Local\Temp
TMPC:\Users\user\AppData\Local\Temp
USERDOMAINGNVBGL3
USERDOMAIN_ROAMINGPROFILEGNVBGL3
USERNAMEuser
USERPROFILEC:\Users\user
windirC:\WINDOWS
ZES_ENABLE_SYSMAN1
__COMPAT_LAYERRunAsAdmin Installer
AP_PARENT_PID10608

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().

<?php
   putenv("PHP_TEMPUSER=GUEST");
   echo "Temp user: " . getenv("PHP_TEMPUSER");
?>

The browser will display the following output −

Temp user: GUEST

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *