Use o server embutido do PHP ao seu favor

Não é novidade de que o PHP possui um servidor web embutido, ele passou a existir desde a versão  5.4 do PHP. Você que desenvolve para a web com PHP deve estar bem habituado a instalar o AMPs (xamp, lamp, MAMP) da vida não é mesmo? Pois bem, apesar de isso ser prático, é pesado e de quebra ainda é difícil de customizar. Será que existe um jeito mais leve, de fácil customização e com uma praticidade incrível? Sim meus caros, existe. É o servidor web embutido do PHP e é sobre ele que falarei a partir de agora.

O que

Um web server embutido para que você tenha mais praticidade ao desenvolver.

Como

Entra-se no diretório desejado e simplesmente inicia o server. O mesmo será acessível a partir do endereço e porta que você definir no momento de inicializar.

Quando

Surgiu a partir da versão 5.4 do PHP ou seja, desde 01/03/2012 (cara… 3 anos já… – isso em 2015, quando escrevi este post). Se você não utiliza este recurso, está na hora de começar!

Por quê?

Bem, o utilizar é uma opção, mas garanto que assim que você entender como funciona não mais vai querer saber dos AMPs da vida. Quer ver?

 

Instalando (ou atualizando)

Imagino que você já tenha o PHP instalado. Independente disso, certifique-se de que a versão do PHP é a 5.4 ou superior e, caso não seja, atualize. Link para a versão mais recente. Pode instalar somente o PHP mesmo, esqueça apache, mysql, sqlite ou qualquer outra biblioteca.

Interesse em TDD?

Então meu livro é perfeito pra você!

Pra ficar melhor ainda, tenho um cupom de 15% de desconto. Clique em “Conheça meu livro” e pegue o seu!

Mãos na massa

Agora que você já tem no mínimo a versão 5.4 do PHP basta começar a trabalhar com o server embutido. Para que você entenda, o mínimo que precisará será um diretório em seu computador com um arquivo index.php. Com isso já podemos ter uma noção do seu funcionamento. Veja o exemplo abaixo:

Primeiramente certifique-se de que a versão de seu PHP é 5.4 ou superior. Faça isso a partir do comando php -v assim como na imagem.

Screen_Shot_2015-04-12_at_22_47_35

Prosseguindo, agora estou em minha pasta Home, que no Mac é equivalente à /Users/andrebian. Isto pode ser realizado em qualquer lugar, apenas mostrarei em minha home por questão de praticidade de não precisar alterar nenhuma permissão de pastas e arquivos.

Screen Shot 2015-04-12 at 22.40.48

Aqui crio uma pasta chamada php-server-embutido para ilustrar este post.

Screen Shot 2015-04-12 at 22.43.24

Como você já deve ter percebido, eu criei a pasta e imediatamente após isto entrei na mesma. Se não percebeu, veja atentamente a imagem anterior.

Ok, agora criaremos um arquivo chamado index.php com o seguinte conteúdo:

<?php
phpinfo();

Ah tá, o info do PHP… Sim, calma, apenas para exemplificar. Neste momento você já será capaz de rodar o PHP dentro da pasta que criou para exemplo (no meu caso /Users/andrebian/php-server-embutido) e acessar a aplicação no browser. Para isto se faz necessário rodar o seguinte comando:

php -S endereço:porta

Não entendeu? Sem problemas, segue exemplo:

starting

Perfeito, perceba que agora o próprio PHP nos informa que está “ouvindo” o endereço https://localhost:8080 e que o Document root é /Users/andrebian/php-server-embutido.

detalhes

Você deve estar se perguntando “… tá mas pra quê isso?” ou “… não entendi, o que é Document root?”. Bem, o document root nada mais é que o ponto de execução do servidor web, em outras palavras, tudo que estiver dentro do diretório definido como document root pode ser executado a partir de um browser. A principal vantagem disso é que diferentemente de um xamp, wamp, lamp ou mamp é que você não precisa necessariamente dispor todos os projetos no mesmo local. Isto é útil para quando você deseja realizar algo pontual como uma simples correção ou rodar um projeto recém clonado do github, mesmo estando na pasta de Downloads.

Quer ver na prática? Abra o seu browser favorito e digite na barra de endereço o seguinte: https://localhost:8080.

Screen Shot 2015-04-12 at 23.08.07

 

Como isto pode ser útil?

Conforme prometido, vou mostrar o que para mim é o principal motivo para utilizar o servidor embutido em todos os meus projetos em desenvolvimento e para isso vou criar uma simples variável contendo uma instância de DateTime.

<?php
$data = new DateTime();
var_dump($data);

Como bem sabemos, se não existir nenhuma configuração de timezone (espera-se que não tenha em uma nova instalação do PHP) isto nos causará um erro.

Screen Shot 2015-04-12 at 23.13.51

Mas o que é isso, uma tela em branco? Sim, uma tela em branco. E isto por que? Porque não temos nenhuma informação de report de erros configurada. Podemos fazer isso de duas formas. A primeira é através de ini_set(‘display_errors’, true); seguido de error_reporting(E_ALL);. A segunda forma de ver os erros que ocorreram é simplesmente visualizar o terminal.

Screen Shot 2015-04-12 at 23.43.30

Desta forma sempre que um erro ocorrer você pode simplesmente visualizar seu terminal que um log constante de tudo que está ocorrendo será exibido, não apenas os erros, mas para identificar rapidamente o que pode estar causando um erro qualquer esta é uma ótima pedida.

Entendo, ainda estão faltando algumas coisinhas. Você pode instalar o mysql separadamente também e simplesmente habilitar a extensão através de um php.ini. Isso mesmo, você pode inclusive utilizar o mesmo php.ini que utilizava com os AMPs da vida com o servidor embutido apenas adicionando logo após o endereço e a porta o parâmetro -c /caminho/do/php.ini. Isto fará com que todas as bibliotecas e configurações que você comumente usa com sua instalação completa do xamp ou semelhante estejam igualmente configuradas. O comando completo seria:

php -S localhost:8080 -c /caminho/do/php.ini

 

Recapitulando

Neste post você aprendeu (ou reforçou) que a partir da versão 5.4 do PHP é possível executar um web server de qualquer ponto do Sistema Operacional. Também viu que rodando o servidor embutido do PHP você economiza espaço em seu HD, processamento e memória. Viu ainda que o simples fato de ler os logs de erros se tornou muito mais intuitivo.

 

O que sugiro a seguir

Bem, nada mais simples que você bolar um script para inicializar o server embutido de qualquer ponto sem ter que ficar toda vez digitando o comando completo para a inicialização do mesmo. Esta dica é um opcional apenas, faça somente se achar que será proveitosa.

Crie um arquivo chamado start-php-server, sem extensão alguma. Nele disponha o seguinte conteúdo:

#!/bin/bash
php -S localhost:8080 -c /caminho/do/php.ini

 

Mova este arquivo para /usr/local/bin e aplique as permissoes necessárias para qualquer usuário. Neste caso como é apenas uma inicialização do servidor embutido do PHP não há mal nenhum em deixar as permissões em 777. Seguem os dois comandos:

mv start-php-server /usr/local/bin
chmod +x /usr/local/bin/start-php-server

Prontinho, agora estando em qualquer ponto do sistema operacional basta digitar no terminal: start-php-server.

start-php-server

No Mac ok, mas e no Linux e Windows?

No Linux o funcionamento é idêntico, apenas para o Windows existem algumas pequenas diferenças. Tanto o PHP quanto o script start-php-server devem ser adicionados no PATH nas variáveis de ambiente, feito isso, atente-se somente para os separadores de diretórios ( / no Linux e Mac e no Windows) que o restante rodará da mesma forma.

 

Concluindo

Como mencionei, utilizar o servidor web embutido do PHP é uma opção mas garanto que assim que você o começar utilizar fará igual a mim, instalará somente o PHP e o mysql na mão e conforme surge a necessidade por coisas mais específicas vai adicionando sob demanda no Sistema Operacional. Isto te dá muito mais liberdade para trabalhar, simplifica a configuração e de quebra lhe dá um live error log que é extremamente útil. Faça um teste, sei que vai gostar.

Menu