PHP 8 no Windows 10 com servidor Nginx

27 de julho de 2022
Ronaldo B.

Neste artigo vamos mostrar como configurar o PHP 8 no Windows 10 usando NGINX e dicas opcionais para facilitar a inicialização, paralização e reinicialização dos executáveis.

Downloads

Para este tutorial usamos as seguintes versões:

PHP 8.0.0 VS16 x64 Non Thread Safe (2020-Nov-24 22:43:38)

https://windows.php.net/downloads/releases/php-8.0.0-nts-Win32-vs16-x64.zip

(Caso queira verificar novas versões ou fazer o download para x86 acesse: https://windows.php.net/download/)

NGINX 1.18.0 

https://nginx.org/download/nginx-1.18.0.zip

(Caso queira verificar novas versões acesse: https://nginx.org/en/download.html)

RunHiddenConsole

Este software será usado caso você queira configurar a inicialização automática do PHP FastCGI e Nginx.

https://redmine.lighttpd.net/attachments/download/660/RunHiddenConsole.zip

PHP 8 NTS

Após fazer o download do arquivo php-8.0.0-nts-Win32-vs16-x64.zip extraia em uma pasta. Recomendamos usar uma localização fácil como C:\PHP por exemplo. Nas configurações que mostraremos usaremos como base este caminho para a localização dos binários do PHP 8, caso você escolha salvar em outra localização, lembre-se de fazer os ajustes necessários.

Localize o arquivo php.ini-development e renomeie para php.ini uma vez que os binários do PHP irão procurar este arquivo onde deve conter as configurações.

As linhas que tiverem ponto e vírgula (;) significa que está comentada e não será lida como uma configuração. Toda vez que precisarmos habilitar ou alterar o valor de alguma diretiva de configuração, certifique-se de que a linha não está iniciando com o caractere de ponto e vírgula.

Localize a diretiva error_reporting e habilite todos os erros com exceção das notícias e estritos.

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

A próxima diretiva é a doc_root, onde iremos definir o diretório raíz. Essa é uma configuração necessária para executar o PHP 8 com FastCGI no Nginx. Para este exemplos estamos apontando para um diretório chamado www na unidade C. Caso você não tenha, é preciso criar ou então configurar outro diretório.

doc_root = "C:\www"

Agora precisamos informar para o PHP onde está localizada a pasta com as extensões, ou arquivos DLL. Para isso remova o comentário da diretiva extension_dir com o valor "ext".

extension_dir = "ext"

Logo abaixo você verá mais uma diretiva que precisaremos alterar, chamada sys_temp_dir. Deverá informar o caminho do diretório temporário do Windows.

sys_temp_dir = "C:\Windows\Temp"

À partir da linha 920 teremos as extensões disponíveis para serem habilitadas de acordo com a sua necessidade. Por exemplo, caso deseje usar o banco de dado MySQL deverá habilitar a extensão mysqli e/ou pdo_mysql.

Neste tutorial habilitamos as seguintes extensões:

extension=curl
extension=fileinfo
extension=mbstring
extension=exif
extension=mysqli
extension=openssl
extension=pdo_mysql

Uma das novidades mais aguardadas da versão 8 do PHP é o JIT (Just In Time). E para habilitarmos está opção é necessário configurar as seguintes diretivas:

pcre.jit=1

Para executar o PHP 8 com FastCGI basta executar o comando abaixo:

C:\PHP\NTS\php-cgi.exe -b 127.0.0.1:9000

Este comando não irá retornar nada se tudo estiver certo, porém irá bloquear o terminal enquanto o PHP estiver em execução.

Agora podemos configurar o Nginx que deverá olhar para este servidor local na porta 9000 com PHP 8.

Nginx 1.18

Extraia os arquivos do arquivo compactado nginx-1.18.0.zip para o diretório C:\NGINX.

Vamos editar algumas configurações no arquivo nginx.conf que está no diretório conf da pasta C:\NGINX.

Neste arquivo os comentários são definidos pelo caractere hashtag (#). Então para habilitar uma diretiva é preciso remover estes comentários.

Na linha 43 temos o inicio do bloco de configuração do location / da seguinte forma:

location / {
	root html;
	index index.html index.html;
}

Vamos alterar o diretório root para apontar para o mesmo diretório que configuramos no php.ini e adicionar o arquivo index.php como sendo uma das possibilidades de arquivo padrão.

location / {
	root "C:\www";
	index index.php index.html index.html;
}

Agora à partir da linha 65 até a linha 71 temos um exemplo de configuração do PHP. Podemos usar como base removendo os comentários e fazendo algumas pequenas modificações.

De inicio o arquivo estará assim:

#location ~\.php$ {
#	root			html;
#	fastcgi_pass	127.0.0.1:9000;
#	fastcgi_index	index.php;
#	fast_cgi_param	SCRIPT_FILENAME /scripts$fastcgi_script_name;
#	include			fastcgi_params;
#}

Após remover os comentários e fazer as modificações o bloco de configuração ficará assim:

location ~\.php$ {
	root			"C:\www";
	fastcgi_pass	127.0.0.1:9000;
	fastcgi_index	index.php;
	fastcgi_param	SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include			fastcgi_params;
}

Veja que alteramos o root para o diretório C:\www e na linha da configuração fastcgi_param trocamos o /scripts por $document_root.

Agora para iniciar o servidor Nginx basta chamar o executável nginx.exe que está no diretório C:\NGINX com o seguinte comando:

C:\NGINX\nginx.exe

Desde que não tenha nenhum serviço executando na porta 80 este comando fará com que o servidor nginx inicie e olhe para o PHP 8 com FastCGI que está rodando na porta 9000.

Neste momento você poderá testar criando um arquivo php na pasta C:\www como o exemplo abaixo:

<?php

phpinfo();

E depois no navegador abra o endereço: http://localhost

Deverá ter o resultado abaixo:

Resultado no arquivo php criado para testar a execução do PHP 8 com Nginx

Porém se fechar os terminais ou reiniciar o computador precisará iniciar o php e o nginx novamente. Caso queira configurar de modo automático poderá criar um arquivo bat e configurar como uma tarefa agendada do Windows 10.

Criando Arquivos .BAT

Arquivo nginx-start.bat para iniciar os serviços:

@ECHO OFF

PUSHD "C:\NGINX"

ECHO Iniciando o PHP 8 com FastCGI...

RunHiddenConsole.exe "C:\PHP\php-cgi.exe" -b 127.0.0.1:9000

ECHO Iniciando o Nginx...

RunHiddenConsole.exe "C:\NGINX\nginx.exe"

POPD

EXIT /b

Arquivo nginx-stop.bat para parar os serviços:

@ECHO OFF

TASKKILL /f /IM nginx.exe

TASKKILL /f /IM php-cgi.exe

EXIT /b

Arquivo nginx-restart.bat para reiniciar os serviços:

@ECHO OFF

CALL nginx-stop.bat

CALL nginx-start.bat

EXIT /b

Agora você poderá fechar os terminais e apenas clicar nos arquivos .bat para executar a ação desejada.

Mas vamos agendar a inicialização automática por meio do Agendador de Tarefas do Windows 10.

Procure no menu iniciar por: Agendador de Tarefas

Na tela inicial do programa, no painel Ações clique em Criar Tarefa...

Tela inicial do Agendador de Tarefas do Windows 10

Deverá abrir a tela abaixo:

Tela Criar Tarefa

Nesta tela você poderá definir um nome e descrever esta tarefa para fácil identificação posterior.

Clique na aba Ações.

Aba Ações da tela Criar Tarefa

Clique no botão Novo... para adicionar uma nova ação.

Tela Nova Ação

Na tela Nova Ação clique em Procurar para localizar o arquivo nginx-start.bat

Procure e selecionar o arquivo nginx-start.bat

Clique em Abrir e depois em OK nas telas que estão abertas para salvar a ação e a tarefa agendada.

Pronto, agora toda vez que o computador iniciar e a porta 80 estiver liberada o serviço do Nginx com PHP 8 FastCGI serão iniciados automaticamente.

Hcode: Utilizamos cookies para a personalização de anúncios e experiências de navegação dentro de nosso site. Ao continuar navegando, você concorda com as nossas Política de Privacidade.