Para trabalhar em um ambiente de desenvolvimento local, o PHP fornece um servidor web embutido de fácil uso.
O servidor web embutido do PHP é um recurso útil, mas não é um servidor da Web Apache nem Nginx. Portanto, recursos como o URL amigável não são suportados por padrão.
Hoje, é comum que os projetos da Web tenham URLs amigáveis como um requisito, por exemplo, as aplicações de Laravel dependem dele. Isso é alcançado através da configuração específica do Apache (Mod_rewrite) ou Nginx, mas não é padrão em renders dos servidores Web PHP embutidos.
URL amigável com servidor web embutido do PHP
Para simular um comportamento de URL amigável no servdior web embutido do PHP você deve fornecer um roteamento baseado em um script PHP.
Do manual do PHP:
Se um arquivo PHP for fornecido na linha de comando quando o servidor web for iniciado, ele será tratado como um script “roteador”. O script é executado no início de cada requisição HTTP. Se esse script retornar
FALSE
, o recurso solicitado será retornado como está. Caso contrário, a saída do script é retornada ao navegador.
A seguir está um script, você pode chamá-lo de router.php
, que retorna false
se a URI solicitada existir como um arquivo, caso contrário inclui index.php
, que deve ter seu código para lidar com o bootstrap do aplicativo. Se você estiver executando um aplicativo Laravel, por exemplo, este script de rota funcionaria como esperado para simular URL amigável.
<?php
$request_uri = __DIR__ . $_SERVER["REQUEST_URI"];
if (file_exists($request_uri)) {
return false;
}
include __DIR__ . ‘/index.php';
Poderíamos mudar nossa rota para verificar extensões que não devem ser tratadas com comportamento amigável de URL:
<?php
$request_uri = __DIR__ . $_SERVER["REQUEST_URI"];
if (file_exists($request_uri)) {
return false;
}
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $request_uri)) {
return false;
}
include __DIR__ . '/index.php';
Para iniciar o servidor web embutido do PHP, passe route.php
como parâmetro:
php -S localhost:8888 routing.php
Importante
O servidor web PHP foi projetado para auxiliar no desenvolvimento de aplicativos. Também pode ser útil para fins de teste ou para demonstrações de aplicativos executados em ambientes controlados. Ele não se destina a ser um servidor web completo. Não deve ser usado em uma rede pública ou em um ambiente de produção.
Considerações finais
Com este script simples, você provavelmente não precisará instalar o Apache ou o Nginx em seu ambiente de desenvolvimento local. Mas, devo dizer que prefiro usar Apache ou Nginx localmente para ter um ambiente mais próximo de ambientes de servidores reais onde meus aplicativos serão executados.
Você pode usar o Docker para deixar seu ambiente de desenvolvimento mais fácil de configurar. Eu gosto de usar Laradock, você pode aprender sobre ele aqui na seção Laradock.
Comentários