PHP
Variables Superglobales PHP
Buscar..
Introducción
Las superglobales son variables integradas que siempre están disponibles en todos los ámbitos.
Varias variables predefinidas en PHP son "superglobales", lo que significa que están disponibles en todos los ámbitos a lo largo de un script. No hay necesidad de hacer global $variable;
Acceder a ellos dentro de funciones o métodos.
PHP5 SuperGlobals
A continuación se muestran los SuperGlobals PHP5
- $ GLOBALES
- $ _REQUEST
- $ _GET
- $ _POST
- $ _FILES
- $ _SERVER
- $ _ENV
- $ _COOKIE
- $ _SESION
$ GLOBALES : esta variable superglobal se usa para acceder a variables globales.
<?php
$a = 10;
function foo(){
echo $GLOBALS['a'];
}
//Which will print 10 Global Variable a
?>
$ _REQUEST : esta variable superglobal se usa para recopilar datos enviados por un formulario HTML.
<?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 : esta Variable SuperGlobal se usa para recopilar datos enviados por el formulario HTML con el método get
.
<?php
if(isset($_GET['username'])){
echo $_GET['username'];
}
//This will print value of HTML field with name username submitted using GET Method
?>
$ _POST : esta Variable SuperGlobal se usa para recopilar datos enviados mediante un formulario HTML con método de post
.
<?php
if(isset($_POST['username'])){
echo $_POST['username'];
}
//This will print value of HTML field with name username submitted using POST Method
?>
$ _FILES : Esta Variable SuperGlobal contiene la información de los archivos cargados a través del método HTTP Post.
<?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 : esta variable superglobal contiene información sobre scripts, encabezados HTTP y rutas de servidor.
<?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 : Este entorno de shell de variable superglobal Detalles de la variable bajo los cuales se ejecuta PHP.
$ _COOKIE : esta Variable SuperGlobal se usa para recuperar el valor de Cookie con la Clave dada.
<?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 : esta variable superglobal se usa para establecer y recuperar el valor de sesión que se almacena en el servidor.
<?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
*/
?>
Suberglobales explicados
Introducción
En pocas palabras, estas son variables que están disponibles en todos los ámbitos de sus scripts.
Esto significa que no hay necesidad de pasarlos como parámetros en sus funciones, o almacenarlos fuera de un bloque de código para tenerlos disponibles en diferentes ámbitos.
¿Qué es un superglobal?
Si estás pensando que estos son como superhéroes, no lo son.
A partir de la versión 7.1.3 de PHP hay 9 variables superglobal. Son los siguientes:
-
$GLOBALS
-$GLOBALS
referencia a todas las variables disponibles en el alcance global -
$_SERVER
- Información del servidor y del entorno de ejecución. -
$_GET
- variables HTTP GET -
$_POST
- variables HTTP POST -
$_FILES
-$_FILES
archivos HTTP -
$_COOKIE
- Cookies HTTP -
$_SESSION
- Variables de sesión -
$_REQUEST
- variables de solicitud HTTP -
$_ENV
- Variables de entorno
Consulte la documentación .
Cuéntame más cuéntame más
Lo siento por la referencia de Grease! Enlazar
¡Un poco de explicación sobre estos héroes súper globales.
$GLOBALS
Una matriz asociativa que contiene referencias a todas las variables que actualmente están definidas en el alcance global del script. Los nombres de las variables son las claves de la matriz.
Código
$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);
Salida
string 'local' (length=5)
string 'global' (length=6)
null
string 'global' (length=6)
En el ejemplo anterior, $myLocal
no se muestra la segunda vez porque se declara dentro de la función test()
y luego se destruye una vez que se cierra la función.
Volverse global
Para remediar esto hay dos opciones.
Opción uno: palabra clave global
function test()
{
global $myLocal;
$myLocal = "local";
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
La palabra clave global
es un prefijo en una variable que la obliga a formar parte del ámbito global.
Tenga en cuenta que no puede asignar un valor a una variable en la misma declaración que la palabra clave global. Por lo tanto, por qué tuve que asignar un valor por debajo. (Es posible si elimina nuevas líneas y espacios, pero no creo que esté limpio. global $myLocal; $myLocal = "local"
).
Opción dos: $GLOBALS
array
function test()
{
$GLOBALS["myLocal"] = "local";
$myLocal = $GLOBALS["myLocal"];
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
En este ejemplo, $myLocal
el valor de $GLOBAL["myLocal"]
ya que me resulta más fácil escribir un nombre de variable en lugar de la matriz asociativa.
$_SERVER
$ _SERVER es una matriz que contiene información como encabezados, rutas y ubicaciones de scripts. Las entradas en esta matriz son creadas por el servidor web. No hay garantía de que cada servidor web proporcione alguno de estos; los servidores pueden omitir algunos o proporcionar otros que no figuran en esta lista. Dicho esto, una gran cantidad de estas variables se tienen en cuenta en la especificación CGI / 1.1 , por lo que debería poder esperarlas.
Un resultado de ejemplo de esto podría ser el siguiente (ejecutarlo en mi PC con Windows usando 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
Hay mucho que tomar allí, así que voy a elegir algunos importantes a continuación. Si desea leer sobre todos ellos, consulte la sección de índices de la documentación.
Yo podría agregarlos todos debajo de un día. ¿O alguien puede editar y agregar una buena explicación de ellos a continuación? Pista, pista ;)
Para todas las explicaciones a continuación, suponga que la URL es http://www.example.com/index.php
-
HTTP_HOST
- La dirección del host.
Esto devolveríawww.example.com
-
HTTP_USER_AGENT
- Contenido del agente de usuario. Esta es una cadena que contiene toda la información sobre el navegador del cliente, incluido el sistema operativo. -
HTTP_COOKIE
- Todas las cookies en una cadena concatenada, con un delimitador de punto y coma. -
SERVER_ADDR
: la dirección IP del servidor, de la cual se ejecuta el script actual.
Esto devolvería93.184.216.34
-
PHP_SELF
: el nombre de archivo del script ejecutado actualmente, relativo a la raíz del documento.
Esto devolvería/index.php
-
REQUEST_TIME_FLOAT
: la marca de tiempo del inicio de la solicitud, con microsegundos de precisión. Disponible desde PHP 5.4.0. -
REQUEST_TIME
: la marca de tiempo del inicio de la solicitud. Disponible desde PHP 5.1.0.
$_GET
Una matriz asociativa de variables pasadas al script actual a través de los parámetros de la URL.
$_GET
es una matriz que contiene todos los parámetros de URL; estos son los que son después de la? en la URL.
Usando http://www.example.com/index.php?myVar=myVal como ejemplo. Esta información de esta URL se puede obtener accediendo en este formato $_GET["myVar"]
y el resultado será myVal
.
Usando algún código para aquellos que no les gusta leer.
// URL = http://www.example.com/index.php?myVar=myVal
echo $_GET["myVar"] == "myVal" ? "true" : "false"; // returns "true"
El ejemplo anterior hace uso del operador ternario .
Esto muestra cómo puede acceder al valor desde la URL usando $_GET
superglobal.
Ahora otro ejemplo! jadear
// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2
echo $_GET["myVar"]; // returns "myVal"
echo $_GET["myVar2"]; // returns "myVal2"
Es posible enviar múltiples variables a través de la URL separándolas con un carácter de signo ( &
).
Riesgo de seguridad
Es muy importante no enviar ninguna información confidencial a través de la URL, ya que permanecerá en el historial de la computadora y será visible para cualquier persona que pueda acceder a ese navegador.
$_POST
Una matriz asociativa de variables pasadas al script actual a través del método HTTP POST cuando se utiliza application / x-www-form-urlencoded o multipart / form-data como el tipo de contenido HTTP en la solicitud.
Muy similar a $_GET
en que los datos se envían de un lugar a otro.
Comenzaré yendo directamente a un ejemplo. (He omitido el atributo de acción ya que esto enviará la información a la página en la que se encuentra el formulario).
<form method="POST">
<input type="text" name="myVar" value="myVal" />
<input type="submit" name="submit" value="Submit" />
</form>
La anterior es una forma básica para la cual se pueden enviar datos. En un entorno real, el atributo de value
no se establecería, lo que significa que el formulario estaría en blanco. Esto enviaría entonces cualquier información que ingrese el usuario.
echo $_POST["myVar"]); // returns "myVal"
Riesgo de seguridad
El envío de datos a través de POST tampoco es seguro. El uso de HTTPS asegurará que los datos se mantengan más seguros.
$_FILES
Una matriz asociativa de elementos cargados en el script actual a través del método HTTP POST. La estructura de esta matriz se describe en la sección de subidas del método POST .
Empecemos con una forma básica.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar" />
<input type="submit" name="Submit" />
</form>
Tenga en cuenta que omití el atributo de action
(¡otra vez!). Además, agregué enctype="multipart/form-data"
, esto es importante para cualquier formulario que se ocupe de la carga de archivos.
// 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"]));
}
Esto se utiliza para cargar un archivo. A veces es posible que desee cargar más de un archivo. Existe un atributo para eso, se llama multiple
.
Hay un atributo para casi cualquier cosa . Lo siento
A continuación se muestra un ejemplo de un formulario que envía varios archivos.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar[]" multiple="multiple" />
<input type="submit" name="Submit" />
</form>
Tenga en cuenta los cambios realizados aquí; Sólo hay unos pocos.
- El nombre de
input
tiene corchetes. Esto se debe a que ahora es una matriz de archivos y por eso le indicamos al formulario que haga una matriz de los archivos seleccionados. Omitir los corchetes resultará en que el último archivo más se establezca en$_FILES["myVar"]
. - El atributo
multiple="multiple"
. Esto solo le dice al navegador que los usuarios pueden seleccionar más de un archivo.
$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;
}
}
Este es un ejemplo muy simple y no maneja problemas como las extensiones de archivo que no están permitidas o los archivos nombrados con código PHP (como un equivalente de PHP de una inyección SQL). Consulte la documentación .
El primer proceso es verificar si hay archivos, y si es así, establezca el número total de ellos en $total
.
El uso del bucle for permite una iteración de la matriz $_FILES
y acceder a cada elemento uno a la vez. Si ese archivo no encuentra un problema, la sentencia if es verdadera y se ejecuta el código de la carga del archivo único.
Si se encuentra un problema, el bloque de conmutación se ejecuta y se presenta un error de acuerdo con el error para esa carga en particular.
$_COOKIE
Una matriz asociativa de variables pasadas al script actual a través de cookies HTTP.
Las cookies son variables que contienen datos y se almacenan en la computadora del cliente.
A diferencia de las superglobales mencionadas anteriormente, las cookies deben crearse con una función (y no asignar un valor). La convención está abajo.
setcookie("myVar", "myVal", time() + 3600);
En este ejemplo, se especifica un nombre para la cookie (en este ejemplo es "myVar"), se da un valor (en este ejemplo es "myVal", pero se puede pasar una variable para asignar su valor a la cookie), y luego se da un tiempo de caducidad (en este ejemplo es una hora porque 3600 segundos es un minuto).
A pesar de que la convención para crear una cookie es diferente, se accede de la misma manera que las demás.
echo $_COOKIE["myVar"]; // returns "myVal"
Para destruir una cookie, se debe volver a llamar a setcookie
, pero el tiempo de caducidad se establece en cualquier momento en el pasado. Vea abajo.
setcookie("myVar", "", time() - 1);
var_dump($_COOKIE["myVar"]); // returns null
Esto desarmará las cookies y las eliminará de la computadora del cliente.
$_SESSION
Una matriz asociativa que contiene variables de sesión disponibles para el script actual. Consulte la documentación de las funciones de sesión para obtener más información sobre cómo se utiliza esto.
Las sesiones son muy parecidas a las cookies, excepto que son del lado del servidor.
Para usar las sesiones, debe incluir session_start()
en la parte superior de sus scripts para permitir que se utilicen las sesiones.
Configurar una variable de sesión es lo mismo que configurar cualquier otra variable. Vea el ejemplo a continuación.
$_SESSION["myVar"] = "myVal";
Al iniciar una sesión, una ID aleatoria se establece como una cookie y se llama "PHPSESSID" y contendrá la ID de la sesión actual. Se puede acceder a esto llamando a la función session_id()
.
Es posible destruir las variables de sesión usando la función unset
(de manera que unset($_SESSION["myVar"])
destruiría esa variable).
La alternativa es llamar a session_destory()
. Esto destruirá toda la sesión, lo que significa que todas las variables de la sesión ya no existirán.
$_REQUEST
Una matriz asociativa que de forma predeterminada contiene los contenidos de
$_GET
,$_POST
y$_COOKIE
.
Como indica la documentación de PHP, esto es solo una recopilación de $_GET
, $_POST
y $_COOKIE
todo en una variable.
Dado que es posible que los tres arreglos tengan un índice con el mismo nombre, hay una configuración en el archivo php.ini
llamada request_order
que puede especificar cuál de los tres tiene prioridad.
Por ejemplo, si se configuró en "GPC"
, entonces se $_COOKIE
el valor de $_COOKIE
, ya que se lee de izquierda a derecha, lo que significa que $_REQUEST
establecerá su valor en $_GET
, luego $_POST
y luego $_COOKIE
y como $_COOKIE
es el último, es el valor que está en $_REQUEST
.
Vea esta pregunta .
$_ENV
Una matriz asociativa de variables pasadas al script actual a través del método de entorno.
Estas variables se importan al espacio de nombres global de PHP desde el entorno en el que se ejecuta el analizador de PHP. Muchos son proporcionados por el shell bajo el cual se ejecuta PHP y diferentes sistemas probablemente ejecutan diferentes tipos de shells, una lista definitiva es imposible. Consulte la documentación de su shell para obtener una lista de las variables de entorno definidas.
Otras variables de entorno incluyen las variables CGI, ubicadas allí independientemente de si PHP se está ejecutando como un módulo de servidor o procesador CGI.
Cualquier cosa almacenada dentro de $_ENV
es del entorno desde el que se ejecuta PHP.
$_ENV
solo se completa si php.ini
permite.
Consulte esta respuesta para obtener más información sobre por qué $_ENV
no se completa.