Em muitos servidores, é comum precisar rodar mais de uma versão do PHP ao mesmo tempo. Um site legado pode depender do PHP 7.4, enquanto uma aplicação nova pode exigir PHP 8.2 ou PHP 8.3. Em vez de manter servidores separados para cada projeto, é possível configurar múltiplas versões do PHP no mesmo ambiente usando Nginx e PHP-FPM.
Essa configuração é bastante útil em empresas que hospedam vários sistemas, ambientes de homologação, aplicações de clientes diferentes ou projetos em processo de migração. O ponto principal é entender que o Nginx não executa PHP diretamente. Ele encaminha as requisições PHP para um processo FastCGI, geralmente controlado pelo PHP-FPM.
Como o Nginx conversa com o PHP-FPM
O Nginx recebe a requisição HTTP e, quando identifica que o arquivo solicitado é um script PHP, encaminha a execução para o PHP-FPM por meio da diretiva fastcgi_pass. Essa comunicação pode acontecer por socket Unix ou por porta TCP.
Em servidores Linux, é muito comum encontrar sockets como estes:
%%OZI_ILB_PROTECT_7eff1f3d577dc5f8ac482ffbb4fe5694%%
Cada socket representa uma versão ou pool do PHP-FPM. Ao configurar o fastcgi_pass de cada site, você define qual versão do PHP será usada naquele virtual host.
Verificando as versões instaladas
Antes de alterar o Nginx, confira quais versões do PHP estão disponíveis no servidor. Os comandos abaixo ajudam a verificar os binários e os serviços do PHP-FPM.
%%OZI_ILB_PROTECT_a6afd1789fa344e4e16db3ac36980c4e%%
Em servidores com múltiplas versões instaladas, o comando php -v mostra apenas a versão usada no terminal, não necessariamente a versão usada por cada site. Por isso, é importante olhar os sockets e os serviços ativos do PHP-FPM.
Exemplo de site usando PHP 8.2
O exemplo abaixo mostra uma configuração simplificada de Nginx para um site usando PHP 8.2 via socket Unix.
%%OZI_ILB_PROTECT_8b5bf8c5ba3c109dd31ead2e480994c8%%
Nesse caso, todas as requisições PHP desse site serão enviadas para o PHP-FPM 8.2. Se outro site precisar usar PHP 7.4, basta configurar o virtual host dele apontando para outro socket.
Exemplo de outro site usando PHP 7.4
%%OZI_ILB_PROTECT_5f361e630db6c60e45648d45caa82c14%%
Com isso, os dois sites podem coexistir no mesmo servidor, cada um usando uma versão diferente do PHP. Essa separação facilita migrações graduais, testes de compatibilidade e manutenção de sistemas antigos sem travar a evolução de novos projetos.
Cuidado com extensões e configurações diferentes
Um erro comum é instalar a nova versão do PHP, mas esquecer que cada versão possui seus próprios módulos e arquivos de configuração. Extensões como mysqli, curl, intl, mbstring, zip, gd e xml precisam estar disponíveis na versão usada pelo site.
%%OZI_ILB_PROTECT_ed63d4bdec8f50fa388c381ee9122c89%%
Também vale lembrar que cada versão pode ter seu próprio php.ini, suas configurações de upload, memória, timezone, OPcache e limites de execução. Portanto, se um site funciona em uma versão e falha em outra, a causa pode estar tanto no código quanto na configuração do PHP.
Testando e recarregando o Nginx
Depois de alterar os arquivos de configuração, sempre teste o Nginx antes de recarregar o serviço. Isso evita derrubar sites por erro de sintaxe.
%%OZI_ILB_PROTECT_9224f82a84eee62e810464003a00b1e0%%
Se a alteração envolver PHP-FPM, também pode ser necessário recarregar o serviço correspondente.
%%OZI_ILB_PROTECT_70500bf6b8be7fab6605de99033e83b2%%
Temos outro conteúdo relacionado sobre esse tema no artigo Nginx 502 Bad Gateway após deploy de PHP-FPM, útil para diagnosticar erros quando o Nginx não consegue se comunicar corretamente com o PHP-FPM.
Conclusão
Rodar múltiplas versões do PHP no mesmo servidor é uma solução prática para ambientes com sistemas legados e aplicações modernas. A configuração exige atenção aos sockets, pools, extensões, arquivos php.ini e virtual hosts do Nginx, mas oferece bastante flexibilidade para manutenção e migração de projetos.
A Saldaris Consultoria presta suporte em servidores Linux, Nginx, PHP-FPM, hospedagem de aplicações PHP e migração de sistemas. Se sua empresa precisa organizar ambientes com múltiplas versões do PHP ou corrigir problemas de configuração, entre em contato pelo formulário abaixo.


