IIS Express
O IIS Express é uma versão leve e independente do IIS, otimizada para desenvolver e testar sites, mantendo todas as funcionalidades principais do IIS.
Além de contar com funcionalidades adicionais concebidas para facilitar o desenvolvimento de websites, incluindo:
- Ele não é executado como um serviço nem requer direitos de administrador para realizar a maioria das tarefas.
- Vários usuários do IIS Express podem trabalhar independentemente no mesmo computador.
Instalando o IIS Express
Acesse https://www.microsoft.com/en-US/download/details.aspx?id=48264 e baixe a versão adequada ao seu sistema operacional e então instale-o.
Instalando PHP
Acesse https://www.php.net/downloads.php?os=windows e baixe a versão Non Thread Safe (NTS) do PHP.
Após a conclusão do download, você pode extrair o arquivo para qualquer pasta desejada, utilizando tar a linha de comando:
mkdir C:\php8_5
tar -xf "php-8.5.9-nts-Win32-vs17-x64.zip" -C "C:\php8_5"
Ou usando o PowerShell
Expand-Archive -LiteralPath ".\php-8.5.9-nts-Win32-vs17-x64.zip" -DestinationPath "C:\php8_5"
Configurando PHP
Se instalou IIS Express x64, accesse usando a seguinte linha de comando:
cd C:\Program Files\IIS Express
Se instalou IIS Express x86, accesse usando a seguinte linha de comando:
cd C:\Program Files (x86)\IIS Express
Para facilitar, você pode definir a seguinte variável (dependendo do caminho onde o php-cgi.exe está localizado):
set PHP_PATH=C:\php8_5
Defina o FastCGI e o manipulador para PHP com os comandos:
appcmd set config /section:system.webServer/fastCGI /+[fullPath='%PHP_PATH%\php-cgi.exe']
appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%PHP_PATH%\php-cgi.exe',resourceType='Unspecified']
appcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script
Configure as variaveis FastCGI, de ambiente e o php.ini com os comandos:
appcmd set config -section:system.webServer/fastCgi /[fullPath='%PHP_PATH%\php-cgi.exe'].instanceMaxRequests:10000
appcmd set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_PATH%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
appcmd set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_PATH%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%PHP_PATH%\php.ini']"
É provavel seja necessário desabilitar os registros do FastCGI no php.ini para evitar que os erros
sejam adicionados ao final de todas respostas HTTP, para isso remova o ; da diretiva:
;fastcgi.logging = 0