Servidor HTTP nativo no PHP

Artigo que mostra como utilizar o servidor HTTP nativo do PHP, disponível a partir da versão 5.4.

Introdução

Embora possa ser usada para outros propósitos, a linguagem PHP é recheada de recursos especialmente úteis para o desenvolvimento de aplicações Web. Porém, uma aplicação Web dinâmica depende também de um servidor HTTP, que recebe as requisições do user-agent e, caso necessário, solicita que o PHP realize algum processamento para gerar um documento, que é retornado para o user-agent.

Os servidores HTTP mais comuns para PHP são o Apache, que é multiplataforma, e o IIS, da Microsoft. Logo, para testar ou utilizar qualquer aplicação web feita em PHP, é necessário instalar também um servidor HTTP e configurá-lo para se comunicar com o PHP.

Porém, na versão 5.4 do PHP, foi criado um servidor HTTP dentro do próprio pacote de recursos da linguagem PHP. Embora seja um servidor simplificado, que não foi projetado para aceitar altíssimas cargas, ele realiza as operações esperadas de um servidor HTTP e, portanto, é útil para testes locais.

Utilizando o servidor HTTP nativo do PHP

Um servidor HTTP é um programa que fica em loop infinito esperando que um cliente (user-agent) faça alguma requisição em alguma porta (normalmente a porta 80) para que ele processe esta requisição e retorne uma resposta para, depois, voltar a esperar por novas requisições. Um servidor HTTP convencional é acionado por um serviço, que fica rodando no computador em background e que normalmente não possui interação direta. As interações normalmente são indiretas, como, por exemplo, consultar a situação do serviço (se está ativo/inativo), ou consultar os logs das operações, para avaliar dados referentes ao tráfego de dados.

O servidor HTTP nativo do PHP, por outro lado, precisa ser acionado manualmente. A forma de inicializá-lo é com o próprio comando "php", passando-se o parâmetro "-S" (maiúsculo) seguido do nome do host virtual, sinal de dois pontos e o número da porta por onde o servidor irá esperar as requisições. Além disso, o comando deve ser acionado a partir do diretório que será reconhecido como diretório raíz (document root). Então, supondo que temos um sistema chamado "foo" dentro do diretório "/var/www/html/foo", podemos inicializar nosso servidor HTTP da seguinte forma (no Linux):

$ cd /var/www/html
$ php -S localhost:80

Caso a porta não esteja sendo usada por outro programa e tenha dado tudo certo, será mostrada uma mensagem parecida com isso:

PHP 5.X Development Server started at data
Listening on http://localhost:80
Document root is /var/www/html
Press Ctrl-C to quit.

Com o servidor ativo, podemos abrir um navegador e acessar o endereço "http://localhost/foo".

Caso você utilize outra porta (por exemplo, 8000), você precisa informá-la ao navegador, após o nome do domínio. Por exemplo: "http://localhost:8000/foo".

Conforme são feitas requisições pelo navegador, o servidor vai exibindo dinamicamente um log com as requisições realizadas, inclusive com as possíveis mensagens de erros e avisos que ocorreram durante o processamento.

Para finalizar o servidor HTTP, basta acessar o terminal de onde ele foi acionado e teclar "Ctrl + C".

Importante: este servidor não deve ser usado em produção. Veja-o apenas como um servidor HTTP quebra galho, que já vem pré-configurado para processar arquivos com extensão ".php". Ele não oferece praticamente nenhum suporte a configuração, realiza o processamento sequencial (ao invés de vários processos em paralelo) e não tem grandes preocupações com performance.

0 comentários