• PHP Video Tutorials

PHP - $_ENV



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

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

The browser will display the following output

Temp user: GUEST
Advertisements