O PHP oferece um grande número de variáveis pré-definidas para qualquer script que execute. Muitas destas variáveis, entretanto, não podem ser completamente documentadas pois dependem do servidor que está sendo executado, a versão e configuração deste servidor e outros fatores. Algumas destas variáveis não estarão disponíveis quando o PHP for executado em linha de comando. Para uma lista destas variáveis, por favor, veja a seção Variáveis Predefinidas Reservadas.
No PHP 4.2.0 e versões posteriores, o valor padrão da diretiva register_globals é off. Esta é a maior modificação no PHP. Ter register_globals off afeta o conjunto de variáveis pré-definidas disponíveis no escopo global. Por exemplo, para obter a variável DOCUMENT_ROOT você usará $_SERVER['DOCUMENT_ROOT'] em vez de $DOCUMENT_ROOT, ou $_GET['id'] da URL http://www.example.com/test.php?id=3 em vez de $id, ou $_ENV['HOME'] em vez de $HOME.
Para informações relacionadas a esta modificação, leia o registro da configuração register_globals, no capítulo de segurança em Usando o Registro Global , assim como os anúncios de lançamento das versões » 4.1.0 e » 4.2.0.
Utilizar as Variáveis Reservadas Pré-definidas do PHP, como os arrays superglobais, é preferível.
Desde a versão 4.1.0, o PHP fornece um conjunto adicional de arrays predefinidos contendo as variáveis do servidor web (se aplicável), variáveis de ambiente e as entradas do usuário. Esses novos arrays são especiais por serem automaticamente globais--significando que estão disponíveis automaticamente em qualquer escopo. Por esta razão, também são conhecidos como "superglobais". (Não há um mecanismo no PHP para superglobais definidas pelo usuário) As superglobais são listadas abaixo; entretanto, para a listagem de seu conteúdo e detalhes sobre as variáveis pré-definidas do PHP e sua natureza, veja a seção Variáveis Reservadas Pré-definidas. Note também, que todas as outras variáveis pré-definidas antigas ($HTTP_*_VARS) ainda existem. A partir do PHP 5.0.0, os grandes arrays de variáveis pré-definidas podem ser desativadas através da diretiva register_long_arrays .
Nota: Variáveis variáveis
Superglobais não podem ser utilizadas como variáveis variáveis dentro de funções ou métodos de classe.
Nota:
Mesmo que ambas variáveis, suprglobais e HTTP_*_VARS existam ao mesmo tempo; não serão idênticas, então modificar uma não alterará a outra.
Se determinadas variáveis não estiverem definidas na diretiva variables_order, seus arrays predefinidos também estarão vazios.