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" target="_blank"> em um script com o endereço http://example.com/test.php/foo.bar pode ser /test.php/foo.bar.
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_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.
'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).
'SCRIPT_NAME'
Contém o caminho completo do script atual. Útil para páginas que precisam apontar para elas mesmas (dinamicamente).
'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.
'PHP_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.
Seja o primeiro a comentar!