PHP proporciona una gran cantidad de variables predefinidas a cualquier script que se ejecute. Muchas de éstas, sin embargo, no pueden ser completamente documentadas ya que dependen del servidor que esté corriendo, la versión y configuración de dicho servidor, y otros factores. Algunas de estas variables no estarán disponibles cuando se ejecute PHP desde la línea de comandos. Para obtener una lista de estas variables, por favor vea la sección sobre Variables Predefinidas Reservadas.
A partir de PHP 4.2.0, el valor predeterminado de la directiva PHP register_globals es off (desactivada). Este es un cambio importante en PHP. Tener register_globals off afecta el conjunto de variables predefinidas disponibles en el sistema. Por ejemplo, para obtener DOCUMENT_ROOT se usará $_SERVER['DOCUMENT_ROOT'] en vez de $DOCUMENT_ROOT ó $_GET['id'] de la URL http://www.example.com/test.php?id=3 en lugar de $id ó $_ENV['HOME'] en lugar de $HOME.
Para más información sobre este cambio, puede consultar el apartado de configuración sobre register_globals, el capítulo sobre seguridad Usando "Register Globals" , asi como los anuncios de lanzamiento de PHP » 4.1.0 y » 4.2.0
El uso de las variables reservadas predefinidas en PHP, como los arrays superglobales es recomendable.
A partir de PHP 4.1.0, PHP ofrece un conjunto adicional de arrays predefinidas que contienen variables del servidor web, el entorno y entradas del usuario. Estos nuevos arrays son un poco especiales porque son automáticamente globales. Por esta razón, son conocidas a menudo como "superglobales". Las superglobales se mencionan más abajo; sin embargo para una lista de sus contenidos y más información sobre variables predefinidas en PHP, por favor consulte la sección Variables predefinidas reservadas. Asimismo, podrá notar cómo las antiguas variables predefinidas ($HTTP_*_VARS) todavía existen. A partir de PHP 5.0.0, los arrays de variables predefinidas de tipo long de PHP se pueden desactivar con la directiva register_long_arrays .
Nota: Variables variables
Las superglobales no pueden ser usadas como variables variables al interior de funciones o métodos de clase.
Nota:
Aún cuando las superglobales y HTTP_*_VARS pueden existir al mismo tiempo; estas variables no son idénticas, así que modificar una no cambia la otra.
Si ciertas variables no son definidas en variables_order, los arrays de PHP predefinidos asociados a estas, estarán vacíos.