Como Configurar PHP-FPM e mod_php no Apache: Usando Múltiplas Versões de PHP no Mesmo Servidor

No ambiente de desenvolvimento ou produção, pode ser necessário rodar múltiplas versões do PHP no mesmo servidor. Se você já tem o PHP instalado de forma modular (com mod_php) e deseja aproveitar os benefícios do PHP-FPM, como performance otimizada e mais controle, este tutorial vai te guiar em como configurar ambas as opções no Apache. Você poderá, então, escolher qual versão de PHP usar em diretórios ou sites específicos.


1. O Que São mod_php e PHP-FPM?

  • mod_php: O mod_php é um módulo do Apache que integra o PHP diretamente ao servidor. Ou seja, o Apache executa o código PHP de forma nativa, sem a necessidade de um processo externo. No entanto, isso pode ser menos eficiente e mais difícil de escalar em ambientes mais complexos.
  • PHP-FPM (FastCGI Process Manager): O PHP-FPM é uma forma mais moderna e eficiente de rodar o PHP. Ele usa processos separados para gerenciar as requisições, permitindo maior controle e performance. Além disso, ele permite rodar diferentes versões de PHP no mesmo servidor sem conflito.

2. Pré-requisitos

  • Apache instalado e funcionando.
  • PHP já instalado (com mod_php ou modular).
  • Acesso de administrador ao servidor para instalar pacotes e modificar configurações do Apache.

3. Instalando PHP-FPM

Se você ainda não tem o PHP-FPM instalado, siga os passos abaixo para instalar as versões de PHP que deseja:

Para Debian/Ubuntu:

sudo apt update
sudo apt install php7.4-fpm php8.1-fpm

Para CentOS/Rocky:

sudo dnf install php74 php74-php-fpm php81 php81-php-fpm

Depois, habilite e inicie os serviços do PHP-FPM:

sudo systemctl enable php7.4-fpm php8.1-fpm
sudo systemctl start php7.4-fpm php8.1-fpm

4. Desabilitando mod_php

Se você já usa mod_php e quer migrar para PHP-FPM, é uma boa prática desabilitar o mod_php para evitar conflitos de configuração.

Para desabilitar mod_php:

sudo a2dismod php7.4
sudo a2dismod php8.1

Em seguida, reinicie o Apache:

sudo systemctl restart apache2

5. Habilitando o mod_proxy_fcgi

Para que o Apache possa se comunicar com o PHP-FPM, é necessário habilitar o módulo mod_proxy_fcgi:

sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2

6. Configurando o Apache para Usar PHP-FPM

Agora, vamos configurar o Apache para usar o PHP-FPM. Isso pode ser feito de maneira global (para todos os sites) ou por diretório.

6.1 Configuração Global (Para Todos os Sites)

Edite o arquivo de configuração do Apache, que pode ser algo como /etc/apache2/sites-available/000-default.conf, e adicione a seguinte configuração:

<VirtualHost *:80>
    DocumentRoot /var/www/seusite
    ServerName seusite.com

    <Directory "/var/www/seusite">
        AllowOverride All
        Require all granted
    </Directory>

    <IfModule mod_proxy_fcgi.c>
        <FilesMatch "\.php$">
            SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
        </FilesMatch>
    </IfModule>
</VirtualHost>

Essa configuração faz com que o Apache use o PHP 7.4 (via PHP-FPM) para todos os arquivos .php.

6.2 Configuração por Diretório ou Por Site

Você também pode configurar o Apache para usar diferentes versões de PHP em diretórios ou sites específicos, editando o .htaccess dentro do diretório do site:

Por exemplo, para usar PHP 7.4 em um site:

<IfModule mod_proxy_fcgi.c>
    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
</IfModule>

E para um outro diretório ou site, você pode configurar PHP 8.1, alterando o socket:

<IfModule mod_proxy_fcgi.c>
    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
    </FilesMatch>
</IfModule>

7. Verificando se Está Funcionando

Para verificar se a versão do PHP foi corretamente configurada, crie um arquivo info.php no diretório do site:

<?php phpinfo(); ?>

Acesse o site no navegador (http://seusite.com/info.php) e verifique a versão do PHP exibida.


8. Conclusão

Agora você tem um servidor Apache configurado para rodar múltiplas versões de PHP usando PHP-FPM, permitindo maior flexibilidade e controle. Você pode:

  • Usar PHP-FPM para diferentes versões de PHP em diretórios ou sites específicos.
  • Desabilitar o mod_php para evitar conflitos.
  • Melhorar a performance e o controle do seu ambiente.
Rolar para cima