PHP
Superglobal Variabler PHP
Sök…
Introduktion
Superglobals är inbyggda variabler som alltid finns tillgängliga i alla omfattningar.
Flera fördefinierade variabler i PHP är "superglobals", vilket innebär att de är tillgängliga i alla omfattningar i ett skript. Det finns inget behov av att göra en global $variable;
för att få åtkomst till dem inom funktioner eller metoder.
PHP5 SuperGlobals
Nedan finns PHP5 SuperGlobals
- $ GLOBALS
- $ _REQUEST
- $ _GET
- $ _POST
- $ _FILES
- $ _SERVER
- $ _ENV
- $ _COOKIE
- $ _SESSION
$ GLOBALS : Denna SuperGlobal Variable används för att komma åt globala variabler.
<?php
$a = 10;
function foo(){
echo $GLOBALS['a'];
}
//Which will print 10 Global Variable a
?>
$ _REQUEST : Denna SuperGlobal-variabel används för att samla in data som skickas in i ett HTML-formulär.
<?php
if(isset($_REQUEST['user'])){
echo $_REQUEST['user'];
}
//This will print value of HTML Field with name=user submitted using POST and/or GET MEthod
?>
$ _GET : Denna SuperGlobal-variabel används för att samla in data som skickats in i HTML-formulär med get
metoden.
<?php
if(isset($_GET['username'])){
echo $_GET['username'];
}
//This will print value of HTML field with name username submitted using GET Method
?>
$ _POST : Denna SuperGlobal-variabel används för att samla in data som skickas in via HTML-formulär med post
metod.
<?php
if(isset($_POST['username'])){
echo $_POST['username'];
}
//This will print value of HTML field with name username submitted using POST Method
?>
$ _FILES : Denna SuperGlobal-variabel innehåller information om uppladdade filer via HTTP Post-metoden.
<?php
if($_FILES['picture']){
echo "<pre>";
print_r($_FILES['picture']);
echo "</pre>";
}
/**
This will print details of the File with name picture uploaded via a form with method='post and with enctype='multipart/form-data'
Details includes Name of file, Type of File, temporary file location, error code(if any error occured while uploading the file) and size of file in Bytes.
Eg.
Array
(
[picture] => Array
(
[0] => Array
(
[name] => 400.png
[type] => image/png
[tmp_name] => /tmp/php5Wx0aJ
[error] => 0
[size] => 15726
)
)
)
*/
?>
$ _SERVER : Denna SuperGlobal-variabel innehåller information om skript, HTTP-rubriker och servervägar.
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
/**
Will print the following details
on my local XAMPP
Array
(
[MIBDIRS] => C:/xampp/php/extras/mibs
[MYSQL_HOME] => \xampp\mysql\bin
[OPENSSL_CONF] => C:/xampp/apache/bin/openssl.cnf
[PHP_PEAR_SYSCONF_DIR] => \xampp\php
[PHPRC] => \xampp\php
[TMP] => \xampp\tmp
[HTTP_HOST] => localhost
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8
[HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
[PATH] => C:\xampp\php;C:\ProgramData\ComposerSetup\bin;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 Server at localhost Port 80
[SERVER_SOFTWARE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12
[SERVER_NAME] => localhost
[SERVER_ADDR] => ::1
[SERVER_PORT] => 80
[REMOTE_ADDR] => ::1
[DOCUMENT_ROOT] => C:/xampp/htdocs
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => C:/xampp/htdocs
[SERVER_ADMIN] => postmaster@localhost
[SCRIPT_FILENAME] => C:/xampp/htdocs/abcd.php
[REMOTE_PORT] => 63822
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /abcd.php
[SCRIPT_NAME] => /abcd.php
[PHP_SELF] => /abcd.php
[REQUEST_TIME_FLOAT] => 1469374173.88
[REQUEST_TIME] => 1469374173
)
*/
?>
$ _ENV : Denna SuperGlobal Variable Shell Miljö Variabel detaljer under vilken PHP körs.
$ _COOKIE : Denna SuperGlobal-variabel används för att hämta kakevärde med given tangent.
<?php
$cookie_name = "data";
$cookie_value = "Foo Bar";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
/**
Output
Cookie 'data' is set!
Value is: Foo Bar
*/
?>
$ _SESSION : Denna SuperGlobal-variabel används för att ställa in och hämta sessionvärde som är lagrat på servern.
<?php
//Start the session
session_start();
/**
Setting the Session Variables
that can be accessed on different
pages on save server.
*/
$_SESSION["username"] = "John Doe";
$_SESSION["user_token"] = "d5f1df5b4dfb8b8d5f";
echo "Session is saved successfully";
/**
Output
Session is saved successfully
*/
?>
Suberglobals förklarade
Introduktion
Enkelt uttryckt, detta är variabler som finns tillgängliga i alla omfattningar i dina skript.
Det betyder att det inte finns något behov att skicka dem som parametrar i dina funktioner, eller lagra dem utanför ett kodblock för att ha dem tillgängliga i olika tillämpningsområden.
Vad är en superglobal ??
Om du tänker att det här är som superhjältar - så är de inte.
Från PHP version 7.1.3 finns det 9 superglobalvariabler. De är som följer:
-
$GLOBALS
-$GLOBALS
alla tillgängliga variabler i global omfattning -
$_SERVER
-$_SERVER
och exekveringsmiljö -
$_GET
- HTTP GET-variabler -
$_POST
- HTTP POST-variabler -
$_FILES
- HTTP-filuppladdningsvariabler -
$_COOKIE
- HTTP-kakor -
$_SESSION
-$_SESSION
-
$_REQUEST
- HTTP Begär variabler -
$_ENV
-$_ENV
Se dokumentationen .
Berätta mer, berätta mer
Jag är ledsen för fettreferensen! Länk
Dags för en förklaring på dessa super hjältar Globals.
$GLOBALS
En associerande grupp som innehåller referenser till alla variabler som för närvarande definieras i skriptets globala omfattning. Variabelns namn är nycklarna i matrisen.
Koda
$myGlobal = "global"; // declare variable outside of scope
function test()
{
$myLocal = "local"; // declare variable inside of scope
// both variables are printed
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
test(); // run function
// only $myGlobal is printed since $myLocal is not globally scoped
var_dump($myLocal);
var_dump($myGlobal);
Produktion
string 'local' (length=5)
string 'global' (length=6)
null
string 'global' (length=6)
I exemplet $myLocal
visas inte $myLocal
andra gången eftersom det deklareras i test()
och förstörs sedan efter att funktionen stängts.
Att bli global
För att avhjälpa detta finns det två alternativ.
Alternativ ett: global
nyckelord
function test()
{
global $myLocal;
$myLocal = "local";
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
Det global
nyckelordet är ett prefix på en variabel som tvingar det att ingå i det globala omfånget.
Observera att du inte kan tilldela ett värde till en variabel i samma uttalande som det globala nyckelordet. Därför varför jag var tvungen att tilldela ett värde under. (Det är möjligt om du tar bort nya rader och mellanslag men jag tycker inte att det är snyggt. global $myLocal; $myLocal = "local"
).
Alternativ två: $GLOBALS
array
function test()
{
$GLOBALS["myLocal"] = "local";
$myLocal = $GLOBALS["myLocal"];
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
I det här exemplet tilldelade jag $myLocal
värdet på $GLOBAL["myLocal"]
eftersom jag tycker det är lättare att skriva ett variabelt namn snarare än det associerande arrayet.
$_SERVER
$ _SERVER är en matris som innehåller information som rubriker, sökvägar och skriptplatser. Posterna i den här arrayen skapas av webbservern. Det finns ingen garanti för att varje webbserver kommer att tillhandahålla någon av dessa; servrar kan utelämna vissa eller tillhandahålla andra som inte listas här. Som sagt, ett stort antal av dessa variabler redovisas i CGI / 1.1-specifikationen , så du bör kunna förvänta dig dessa.
Ett exempel på detta kan vara följande (kör på min Windows PC med WAMP)
C:\wamp64\www\test.php:2:
array (size=36)
'HTTP_HOST' => string 'localhost' (length=9)
'HTTP_CONNECTION' => string 'keep-alive' (length=10)
'HTTP_CACHE_CONTROL' => string 'max-age=0' (length=9)
'HTTP_UPGRADE_INSECURE_REQUESTS' => string '1' (length=1)
'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' (length=110)
'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' (length=74)
'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, sdch, br' (length=23)
'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.8,en-GB;q=0.6' (length=26)
'HTTP_COOKIE' => string 'PHPSESSID=0gslnvgsci371ete9hg7k9ivc6' (length=36)
'PATH' => string 'C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\Program Files\ATI Technologies\ATI.ACE\Core-Static;E:\Program Files\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\Intel(R) Managemen'... (length=1169)
'SystemRoot' => string 'C:\WINDOWS' (length=10)
'COMSPEC' => string 'C:\WINDOWS\system32\cmd.exe' (length=27)
'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY' (length=57)
'WINDIR' => string 'C:\WINDOWS' (length=10)
'SERVER_SIGNATURE' => string '<address>Apache/2.4.23 (Win64) PHP/7.0.10 Server at localhost Port 80</address>' (length=80)
'SERVER_SOFTWARE' => string 'Apache/2.4.23 (Win64) PHP/7.0.10' (length=32)
'SERVER_NAME' => string 'localhost' (length=9)
'SERVER_ADDR' => string '::1' (length=3)
'SERVER_PORT' => string '80' (length=2)
'REMOTE_ADDR' => string '::1' (length=3)
'DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13)
'REQUEST_SCHEME' => string 'http' (length=4)
'CONTEXT_PREFIX' => string '' (length=0)
'CONTEXT_DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13)
'SERVER_ADMIN' => string '[email protected]' (length=29)
'SCRIPT_FILENAME' => string 'C:/wamp64/www/test.php' (length=26)
'REMOTE_PORT' => string '5359' (length=4)
'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)
'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)
'REQUEST_METHOD' => string 'GET' (length=3)
'QUERY_STRING' => string '' (length=0)
'REQUEST_URI' => string '/test.php' (length=13)
'SCRIPT_NAME' => string '/test.php' (length=13)
'PHP_SELF' => string '/test.php' (length=13)
'REQUEST_TIME_FLOAT' => float 1491068771.413
'REQUEST_TIME' => int 1491068771
Det finns mycket att ta in där så jag kommer att välja ut några viktiga nedan. Om du vill läsa om dem alla, se dokumentets avsnitt i dokumentationen.
Jag kan lägga till dem alla under en dag. Eller någon kan redigera och lägga till en bra förklaring av dem nedan? Tips, ledtråd ;)
För alla förklaringar nedan, antar att webbadressen är http://www.example.com/index.php
-
HTTP_HOST
-HTTP_HOST
.
Detta skulle returnerawww.example.com
-
HTTP_USER_AGENT
- Innehållet i användaragenten. Detta är en sträng som innehåller all information om klientens webbläsare, inklusive operativsystem. -
HTTP_COOKIE
- Alla kakor i en sammankopplad sträng, med en halvkolonnavgränsare. -
SERVER_ADDR
- IP-adressen till servern, av vilken det aktuella skriptet körs.
Detta skulle returnera93.184.216.34
-
PHP_SELF
-PHP_SELF
på det nuvarande exekverade skriptet i förhållande till dokumentroten.
Detta skulle returnera/index.php
-
REQUEST_TIME_FLOAT
- Tidsstämpeln för början av begäran, med mikrosekund precision. Finns sedan PHP 5.4.0. -
REQUEST_TIME
- Tidsstämpeln för början av begäran. Finns sedan PHP 5.1.0.
$_GET
En associativ matris med variabler som skickas till det aktuella skriptet via URL-parametrarna.
$_GET
är en matris som innehåller alla URL-parametrar; det här är vad som är efter? i URL: n.
Använd http://www.example.com/index.php?myVar=myVal som exempel. Denna information från denna URL kan erhållas genom att komma åt i detta format $_GET["myVar"]
och resultatet av detta blir myVal
.
Att använda någon kod för de som inte gillar att läsa.
// URL = http://www.example.com/index.php?myVar=myVal
echo $_GET["myVar"] == "myVal" ? "true" : "false"; // returns "true"
Ovanstående exempel använder den ternära operatören .
Detta visar hur du kan komma åt värdet från URL: en med $_GET
superglobal.
Nu ytterligare ett exempel! flämtning
// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2
echo $_GET["myVar"]; // returns "myVal"
echo $_GET["myVar2"]; // returns "myVal2"
Det är möjligt att skicka flera variabler via webbadressen genom att separera dem med ett karaktärsnitt ( &
).
Säkerhetsrisk
Det är mycket viktigt att inte skicka någon känslig information via URL: en, eftersom den kommer att stanna i datorns historia och kommer att vara synlig för alla som kan komma åt den webbläsaren.
$_POST
En associativ matris med variabler som skickas till det aktuella skriptet via HTTP POST-metoden när du använder applikation / x-www-form-urlenkodad eller multipart / formdata som HTTP-innehållstyp i begäran.
Mycket lik $_GET
i att data skickas från en plats till en annan.
Jag börjar med att gå direkt in i ett exempel. (Jag har utelämnat åtgärdsattributet eftersom det kommer att skicka informationen till sidan som formuläret finns på).
<form method="POST">
<input type="text" name="myVar" value="myVal" />
<input type="submit" name="submit" value="Submit" />
</form>
Ovan är ett grundläggande formulär för vilket data kan skickas. I en verklig miljö skulle value
attribut inte ställas in vilket innebär att formen skulle vara tom. Detta skickar sedan den information som användaren anger.
echo $_POST["myVar"]); // returns "myVal"
Säkerhetsrisk
Att skicka data via POST är inte heller säkert. Att använda HTTPS kommer att säkerställa att data hålls säkrare.
$_FILES
Ett associerande array av objekt som laddats upp till det aktuella skriptet via HTTP POST-metoden. Strukturen för denna grupp visas i avsnittet för uppladdningar av POST-metoden .
Låt oss börja med en grundform.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar" />
<input type="submit" name="Submit" />
</form>
Observera att jag utelämnade action
attribut (igen!). Jag har också lagt till enctype="multipart/form-data"
, detta är viktigt för alla former som kommer att hantera filuppladdningar.
// ensure there isn't an error
if ($_FILES["myVar"]["error"] == UPLOAD_ERR_OK)
{
$folderLocation = "myFiles"; // a relative path. (could be "path/to/file" for example)
// if the folder doesn't exist then make it
if (!file_exists($folderLocation)) mkdir($folderLocation);
// move the file into the folder
move_uploaded_file($_FILES["myVar"]["tmp_name"], "$folderLocation/" . basename($_FILES["myVar"]["name"]));
}
Detta används för att ladda upp en fil. Ibland kanske du vill ladda upp mer än en fil. Det finns ett attribut för det, det kallas multiple
.
Det finns ett attribut för nästan vad som helst . Jag är ledsen
Nedan är ett exempel på ett formulär som skickar in flera filer.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar[]" multiple="multiple" />
<input type="submit" name="Submit" />
</form>
Observera ändringarna som görs här; det finns bara ett fåtal.
-
input
har fyrkantiga parenteser. Detta beror på att det nu är en matris med filer och så vi berättar formuläret att göra en matris med de valda filerna. Om du undanröjer de fyrkantiga parenteserna kommer den senare filen att ställas in till$_FILES["myVar"]
. - Attributen
multiple="multiple"
. Detta berättar bara för webbläsaren att användare kan välja mer än en fil.
$total = isset($_FILES["myVar"]) ? count($_FILES["myVar"]["name"]) : 0; // count how many files were sent
// iterate over each of the files
for ($i = 0; $i < $total; $i++)
{
// there isn't an error
if ($_FILES["myVar"]["error"][$i] == UPLOAD_ERR_OK)
{
$folderLocation = "myFiles"; // a relative path. (could be "path/to/file" for example)
// if the folder doesn't exist then make it
if (!file_exists($folderLocation)) mkdir($folderLocation);
// move the file into the folder
move_uploaded_file($_FILES["myVar"]["tmp_name"][$i], "$folderLocation/" . basename($_FILES["myVar"]["name"][$i]));
}
// else report the error
else switch ($_FILES["myVar"]["error"][$i])
{
case UPLOAD_ERR_INI_SIZE:
echo "Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.";
break;
case UPLOAD_ERR_FORM_SIZE:
echo "Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
break;
case UPLOAD_ERR_PARTIAL:
echo "Value: 3; The uploaded file was only partially uploaded.";
break;
case UPLOAD_ERR_NO_FILE:
echo "Value: 4; No file was uploaded.";
break;
case UPLOAD_ERR_NO_TMP_DIR:
echo "Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3.";
break;
case UPLOAD_ERR_CANT_WRITE:
echo "Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.";
break;
case UPLOAD_ERR_EXTENSION:
echo "Value: 8; A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
break;
default:
echo "An unknown error has occured.";
break;
}
}
Detta är ett mycket enkelt exempel och hanterar inte problem som filändelser som inte är tillåtna eller filer namngivna med PHP-kod (som en PHP-ekvivalent för en SQL-injektion). Se dokumentationen .
Den första processen är att kontrollera om det finns några filer, och i så fall ställa in det totala antalet av dem till $total
.
Med hjälp av for-loopen kan en iteration av $_FILES
arrayen komma åt varje objekt en åt gången. Om den filen inte stöter på ett problem körs if-satsen och koden från den enda filuppladdningen körs.
Om ett problem stöds utförs switchblocket och ett fel presenteras i enlighet med felet för den specifika uppladdningen.
$_COOKIE
En associativ matris med variabler som skickas till det aktuella skriptet via HTTP-kakor.
Cookies är variabler som innehåller data och lagras på klientens dator.
Till skillnad från de ovannämnda superglobalerna måste cookies skapas med en funktion (och inte tilldela ett värde). Konventet är nedan.
setcookie("myVar", "myVal", time() + 3600);
I det här exemplet anges ett namn för cookien (i det här exemplet är det "myVar"), ett värde ges (i det här exemplet är det "myVal", men en variabel kan skickas för att tilldela dess värde till cookien), och sedan ges en utgångstid (i detta exempel är det en timme eftersom 3600 sekunder är en minut).
Trots att konventionen för att skapa en cookie är annorlunda har den åtkomst på samma sätt som de andra.
echo $_COOKIE["myVar"]; // returns "myVal"
För att förstöra en cookie måste setcookie
igen, men giltighetstidens utgång är inställd på när som helst tidigare. Se nedan.
setcookie("myVar", "", time() - 1);
var_dump($_COOKIE["myVar"]); // returns null
Detta kommer att avaktivera cookies och ta bort dem från klientens dator.
$_SESSION
En associerande grupp som innehåller sessionvariabler tillgängliga för det aktuella skriptet. Se funktioner Session dokumentation för mer information om hur detta används.
Sessioner är ungefär som cookies förutom att de är serversidan.
För att använda sessioner måste du inkludera session_start()
högst upp i dina skript för att göra det möjligt att använda sessioner.
Ställa in en sessionvariabel är samma som att ställa in någon annan variabel. Se exempel nedan.
$_SESSION["myVar"] = "myVal";
När du startar en session ställs ett slumpmässigt ID in som en cookie och kallas "PHPSESSID" och kommer att innehålla session-ID för den aktuella sessionen. Detta kan nås genom att ringa session_id()
-funktionen.
Det är möjligt att förstöra unset
hjälp av unset
funktionen (så att unset($_SESSION["myVar"])
skulle förstöra den variabeln).
Alternativet är att ringa session_destory()
. Detta förstör hela sessionen vilket innebär att alla sessionvariabler inte längre existerar.
$_REQUEST
En associerande grupp som som standard innehåller innehållet i
$_GET
,$_POST
och$_COOKIE
.
Som det framgår av PHP-dokumentationen är detta bara en samling av $_GET
, $_POST
och $_COOKIE
allt i en variabel.
Eftersom det är möjligt för alla dessa arrayer att ha ett index med samma namn finns det en inställning i php.ini
filen som heter request_order
som kan ange vilken av de tre som har företräde.
Till exempel, om det ställdes till "GPC"
, kommer värdet på $_COOKIE
att användas, eftersom det läses från vänster till höger, vilket betyder att $_REQUEST
kommer att sätta sitt värde till $_GET
, sedan $_POST
och sedan $_COOKIE
och eftersom $_COOKIE
är sist är det värdet som är i $_REQUEST
.
Se den här frågan .
$_ENV
En associativ matris med variabler som skickas till det aktuella skriptet via miljömetoden.
Dessa variabler importeras till PHP: s globala namnutrymme från den miljö som PHP-parsaren körs under. Många tillhandahålls av skalet under vilket PHP körs och olika system förmodligen kör olika slags skal, en definitiv lista är omöjlig. Se dokumentets skal för en lista med definierade miljövariabler.
Andra miljövariabler inkluderar CGI-variabler, placerade där oavsett om PHP körs som en servermodul eller CGI-processor.
Allt som lagras inom $_ENV
kommer från miljön från vilken PHP körs in.
$_ENV
endast om php.ini
tillåter det.
Se detta svar för mer information om varför $_ENV
inte är befolkat.