Manual do PHP
Anterior | Apêndice L. Palavras reservadas do PHP | Próxima

# Variáveis predefinidas

Desde o PHP 4.1.0, o método preferencial para obter variáveis externas é através das superglobais mencionadas acima. Antes disso, as pessoas utilizavam register_globals ou os arrays pré-definidos do PHP (`$HTTP_*_VARS`). A partir do PHP 5.0.0, os grandes arrays de variáveis pré-definidos podem ser desativados através da diretiva register_long_arrays .

## Variáveis do servidor: `$_SERVER`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, use `$HTTP_SERVER_VARS`.

`$_SERVER` é um array contendo informações como headers, caminhos e localizações do script. Os itens deste array são criados pelo servidor web. Não há garantias que todos os servidores web geram todas elas: alguns servidores talvez omitam algumas ou geram outras que não estão listadas aqui. Mesmo assim, um grande número dessas variáveis estão de acordo com a especificação CGI 1.1, então você pode esperar encontrá-las nesse array.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_SERVER; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_SERVER_VARS`.

`$HTTP_SERVER_VARS` contém a mesmas informações, mas ela não é uma superglobal.(Note que `$HTTP_SERVER_VARS` e `$_SERVER` são variáveis diferentes como também o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_SERVER` e `$HTTP_SERVER_VARS`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

Você poderá ou não encontrar qualquer um dos seguintes elementos dentro de $_SERVER. Note que poucos (ou nenhum) deles estão disponíveis (ou não terão qualquer sentido) se você estiver rodando o PHP na linha de comando.

'`PHP_SELF`'

  O nome do arquivo do script atualmente em uso, relativo ao document root. Por exemplo, `$_SERVER['PHP_SELF']` em um script com o endereço `http://example.com/test.php/foo.bar` pode ser `/test.php/foo.bar`. A constante __FILE__ contém o caminho completo e nome do arquivo (mesmo incluído) atual.

  Se estiver rodando o PHP em linha de comando, esta variável não está disponível.

'`argv`'

  Array de argumentos passado para o script. Quando o script é executado na linha de comando, isto permite um acesso aos parâmetros de linha de comando no estilo do C. Quando chamado via método GET, ele conterá a query string.

'`argc`'

  Contém o número de parâmetros da linha de comando passados para o script (se executando da linha de comando).

'`GATEWAY_INTERFACE`'

  O número de revisão da especificação CGI que o servidor está utilizando, por exemplo : '`CGI/1.1`'.

'`SERVER_NAME`'

  O nome host do servidor onde o script atual é executado. Se o script está rodando em um host virtual, este será o valor definido para aquele host virtual.

'`SERVER_SOFTWARE`'

  A string de identificação do servidor, fornecida nos headers quando respondendo a requests.

'`SERVER_PROTOCOL`'

  Nome e número de revisão do protocolo de informação pelo qual a página foi requerida, por exemplo '`HTTP/1.0`';

'`REQUEST_METHOD`'

  Contém o método de request utilizando para acessar a página. Geralmente '`GET`', '`HEAD`', '`POST`' ou '`PUT`'.

'`QUERY_STRING`'

  A query string (string de solicitação), se houver, pela qual a página foi acessada.

'`DOCUMENT_ROOT`'

  O diretório raiz sob onde o script atual é executado, como definido no arquivos de configuração do servidor.

'`HTTP_ACCEPT`'

  O conteúdo do header `Accept:` da requisição atual, se houver.

'`HTTP_ACCEPT_CHARSET`'

  O conteúdo do header `Accept-Charset:` da requisição atual, se houver. Exemplo: '`iso-8859-1,*,utf-8`'.

'`HTTP_ACCEPT_ENCODING`'

  O conteúdo do header `Accept-Encoding:` da requisição atual, se houver. Exemplo: '`gzip`'.

'`HTTP_ACCEPT_LANGUAGE`'

  O conteúdo do header `Accept-Language:` da requisição atual, se houver. Exemplo '`en`'.

'`HTTP_CONNECTION`'

  O conteúdo do header `Connection:` da requisição atual, se houver. Exemplo: '`Keep-Alive`'.

'`HTTP_HOST`'

  O conteúdo do header `Host:` da requisição atual, se houver.

'`HTTP_REFERER`'

  O endereço da página (se houver) através da qual o agente do usuário acessou a página atual. Essa diretiva é informada pelo agente do usuário. Nem todos os browsers geram esse header, e alguns ainda possuem a habilidade de modificar o conteúdo do `HTTP_REFERER` como recurso. Em poucas palavras, não é confiável.

'`HTTP_USER_AGENT`'

  O conteúdo do header `User-Agent:` da requisição atual, se houver. É uma string denotando o agente de usuário pelo qual a página é acessada. Um exemplo típico é: `Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)`. Além de outras coisas, você pode utilizar este valor com get_browser() para personalizar a geração de suas páginas para as capacidades do agente do usuário.

'`REMOTE_ADDR`'

  O endereço IP de onde o usuário está visualizado a página atual.

'`REMOTE_HOST`'

  O nome do host que o usuário utilizou para chamar a página atual. O DNS reverso (lookup) do `REMOTE_ADDR` do usuário.

  > Nota: Seu servidor web precisa estar configurado para criar essa variável. Por exemplo, no Apache você precisa colocar um `HostnameLookups On` dentro do `httpd.conf`. Veja também gethostbyaddr().

'`REMOTE_PORT`'

  A porta TCP na máquina do usuário utilizada para comunicação com o servidor web.

'`SCRIPT_FILENAME`'

  O caminho absoluto o script atualmente em execução.

  > Nota: Se o script for executado pela CLI com um caminho relativo, como `file.php` ou `../file.php`, `$_SERVER['SCRIPT_FILENAME']` irá conter o caminho relativo especificado pelo usuário.

'`SERVER_ADMIN`'

  O valor fornecido pela diretiva SERVER_ADMIN (do Apache) no arquivo de configuração do servidor. Se o script está sendo executado em um host virtual, este será os valores definidos para aquele host virtual.

'`SERVER_PORT`'

  A porta na máquina servidora utilizada pelo servidor web para comunicação. Como default, este valor é '`80`'. Utilizando SSL, entretanto, mudará esse valor para a porta de comunicação segura HTTP.

'`SERVER_SIGNATURE`'

  String contendo a versão do servidor e nome do host virtual que é adicionado às páginas geradas no servidor, se ativo.

'`PATH_TRANSLATED`'

  O caminho real do script relativo ao sistema de arquivos (não o document root), depois realizou todos os mapeamentos de caminhos (virtual-to-real).

  > Nota: A partir do PHP 4.3.2, `PATH_TRANSLATED` não mais existe implicitamente sob a SAPI do Apache 2, ao contrário da mesma situação no Apache 1, onde ela tinha o mesmo valor da variável de servidor `SCRIPT_FILENAME`, quando a mesma não era configurada pelo Apache. Essa mudança foi realizada para conformidade com a especificação CGI, onde `PATH_TRANSLATED` deve existir somente se `PATH_INFO` estiver definida.

  > Apache 2 users may use `AcceptPathInfo = On` inside `httpd.conf` to define `PATH_INFO`.

'`SCRIPT_NAME`'

  Contém o caminho completo do script atual. Útil para páginas que precisam apontar para elas mesmas (dinamicamente). A constante __FILE__ contém o caminho completo e nome do arquivo (mesmo incluído) atual.

'`REQUEST_URI`'

  O URI fornecido para acessar a página atual, por exemplo, '`/index.html`'.

'`PHP_AUTH_USER`'

  Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com o username fornecido pelo usuário.

'`PHP_AUTH_PW`'

  Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com a senha fornecida pelo usuário.

'`AUTH_TYPE`'

  Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com o tipo de autenticação utilizado.

## Variáveis de ambiente: `$_ENV`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, utilize `$HTTP_ENV_VARS`.

Estas variáveis são importadas dentro no espaço global do PHP do ambiente sob qual o interpretador do PHP está rodando. Muitos são são criados no shell (terminal) sob o qual o PHP é executado e sistemas diferentes normalmente utilizam vários sabores de shells, e uma lista definitiva é impossível. Verifique a documentação de sua shell para a lista de variáveis ambiente definidas.

Outras variáveis ambiente incluem as variáveis CGI, informadas aqui independente do PHP estar rodando como um módulo do servidor ou como processador CGI.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_ENV; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_ENV_VARS`.

`$HTTP_ENV_VARS` contém a mesma informação, mas não é uma superglobal. (Note que `$HTTP_ENV_VARS` e `$_ENV` são variáveis diferentes como também o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_ENV` e `$HTTP_ENV_VARS`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Cookies HTTP: `$_COOKIE`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, utilize `$HTTP_COOKIE_VARS`.

Contém um array associativo de variáveis passas para o script atual através de cookies HTTP.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_COOKIE; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_COOKIE_VARS`.

`$HTTP_COOKIE_VARS` contém as mesmas informações, mas não é uma superglobal. (Note que `$HTTP_COOKIE_VARS` e `$_COOKIE` são variáveis diferentes como também o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_COOKIE` e `$HTTP_COOKIE_VARS`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Variáveis HTTP GET: `$_GET`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, use `$HTTP_GET_VARS`.

Contém um array associativo de variáveis passadas para o script atual através do método HTTP GET.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_GET; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_GET_VARS`.

`$HTTP_GET_VARS` contém as mesmas informações, mas não é uma superglobal. (Note que `$HTTP_GET_VARS` e `$_GET` são variáveis diferentes como também o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_GET` e `$HTTP_GET_VARS`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Variaveis HTTP POST: `$_POST`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, use `$HTTP_POST_VARS`.

Contém um array associativo de variáveis passadas para o script atual através do método HTTP POST.

Esta é uma variável 'superglobal', ou automaticamente global. Isto siginifica que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_POST; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_POST_VARS`.

`$HTTP_POST_VARS` contém as mesmas informações, mas não é uma superglobal. (Note que `$HTTP_POST_VARS` e `$_POST` são variáveis diferentes como também o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_POST` e `$HTTP_POST_VARS`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Variáveis de upload de arquivos HTTP: `$_FILES`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, use `$HTTP_POST_FILES`.

Contém um array associativo dos itens carregador no script atual através do método HTTP POST.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_FILES; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_FILES_VARS`.

`$HTTP_POST_FILES` contém as mesmas informações, mas não é uma superglobal. (Note que `$HTTP_POST_FILES` e `$_FILES` são variáveis diferentes e portanto o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_FILES` e `$HTTP_POST_FILES`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Variáveis da requisição: `$_REQUEST`

> Nota: Introduzida na versão 4.1.0. Não há array equivalente em versões anteriores.

> Nota: Até o PHP 4.3.0, as informações de `$_FILES` também estavam incluídas em `$_REQUEST`.

Contém um array associativo com os conteúdos de `$_GET`, `$_POST` e `$_COOKIE`.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_REQUEST; para pode acessá-la dentro de funções ou métodos.

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_REQUEST`. Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Variáveis de sessão: `$_SESSION`

> Nota: Introduzida na versão 4.1.0. Em versões anteriores, use `$HTTP_SESSION_VARS`.

Contém um array associativo das variáveis de sessão disponíveis para o script atual. Veja a documentação das funções de Sessões para maiores informações de como utilizá-las.

Esta é uma variável 'superglobal', ou automaticamente global. Isto siginifica que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_SESSION; para pode acessá-la dentro de funções ou métodos, como era necessário com `$HTTP_SESSION_VARS`.

`$HTTP_SESSION_VARS` contém as mesmas informações, mas não é uma superglobal. (Note que `$HTTP_SESSION_VARS` e `$_SESSION` são variáveis diferentes e portanto o PHP as manipula diferentemente)

Se a diretiva register_globals está ativa, então essas variáveis tornam-se disponíveis no escopo global do script (por exemplo, separados dos arrays `$_SESSION` e `$HTTP_SESSION_VARS` Para maiores informações, veja o capítulo de segurança entitulado Utilizando registradores globais. Estas variáveis globais individuais não são superglobais.

## Variaveis globais: `$GLOBALS`

> Nota: `$GLOBALS` foi disponibilizada desde a versão 3.0.0.

Um array associativo contendo referências para todas as variáveis atualmente definidas no escopo global do script. Os nomes das variáveis são as chaves do array.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $GLOBALS; para pode acessá-la dentro de funções ou métodos.

## A mensagem de erro anterior: `$php_errormsg`

`$php_errormsg` é uma variável contendo o texto da última mensagem de erro gerada pelo PHP. Esta variável somente está disponível no escopo em que o erro ocorreu, e somente se a opção de configuração track_errors está ativa (seu default é off).

Anterior | Principal | Próxima
Palavras reservadas do PHP | Acima | Classes pre-definidas