Como rodar múltiplas versões do PHP no Apache2

Nesse tutorial ensinarei como rodar a versão 5.6 e 7.4 simultanamente e escolher qual versão utilizar configurando tanto o htacess quanto a vhost

Pré Requisitos

Você já deve ter o Apache2 instalado e funcionando corretamente no seu servidor. Esse tutorial utilizou a versão 18.04 do Ubuntu.

1 – Adicionar repositório

Primeiro, atualizar a lista de pacotes do apt:

$ sudo apt update

Instale o libapache2-mod-fcgid. Esse é o módulo que faz a integração do apache2 com o php fastcgi:

$ sudo apt install libapache2-mod-fcgid

Para adicionar novos repositórios com o comando add-apt-repositories, você provavelmente vai precisar instalar o pacote software-properties-common :

$ sudo apt install software-properties-common

Vamos adicionar o repositório PHP do Ondřej’s que nos permitirá fazer o download de ambas as versões do PHP:

$ sudo add-apt-repository ppa:ondrej/php && sudo apt update

2 – Instalar o PHP

Agora já podemos instalar as versões que desejarmos. Esse repositório possui as versões 5.6 e 7.x do PHP. No nosso tutorial utilizaremos as versões 5.6 e 7.4

$ sudo apt install php5.6 php5.6-fpm
$ sudo apt install php7.4 php7.4-fpm

Pressione y ou ENTER quando aparecer o prompt de instalação.

Depois de instalado, você deve ter dois sockets rodando em /var/run/php

$ ls /var/run/php/
total 8
-rw-r--r-- 1 root     root     4 Feb 17 16:50 php5.6-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 17 16:50 php5.6-fpm.sock
-rw-r--r-- 1 root     root     5 Feb 17 16:51 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 17 16:51 php7.4-fpm.sock

No passo 3 utilizaremos a diretiva <FilesMaetch> para informar ao Apache qual socket do utilizaremos.

Extensão MySQL

Se você for usar o MySQL será necessário instalar as exntesões de integração entre o PHP e o MySQL:

$ sudo apt install php5.6-mysql
$ sudo apt install php7.4-mysql

Outras extensões

Lembre-se que todas extensão do PHP que você precisar instalar você deverá instalar para ambas as versões do PHP. Por exemplo, para instalar o cURL:

$ sudo apt install php5.6-curl
$ sudo apt install php7.4-curl

3 – Configurar o Apache

Precisaremos adicionar alguns módulos do Apache utilizando o comando a2enmod :

$ sudo a2enmod actions alias proxy_fcgi fcgid

Reinicie o Apache:

$ sudo systemctl restart apache2

 

A partir de agora você pode utilizar tanto os arquivos de configuração do vHost quanto o htaccess para informar ao Apache qual versão do PHP você quer utilizar.

4 – Virtual Hosts

Abra o arquivo de configuração .conf do seu site e adicione a seguinte diretiva <FilesMatch>. Isso informará qual versão do PHP o Apache deverá utilizar para aquele site:

PHP 5.6

<VirtualHost *:80>

...

    <FilesMatch \.php$>
        # Apache 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </FilesMatch>

...

</VirtualHost>

Certifique-se de reiniciar o Apache para que as alterações tenham efeito.

$ sudo systemctl restart apache2

PHP 7.4

<VirtualHost *:80>

...

    <FilesMatch \.php$>
        # Apache 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
    </FilesMatch>

...

</VirtualHost>
$ sudo systemctl restart apache2

5 – htaccess

A diretiva <FilesMatch> também pode ser utilizada no arquivo htaccess. Poré, certifique-se primeiro de que a diretiva AllowOverride está ativa, senão o Apache vai ignorar o arquivo htaccess.

Abra o arquivo de configuração do Apache:

$ sudo nano /etc/apache2/apache2.conf

Vá até a sessão <Directory /var/www/> e certifique-se de que AllowOverride está configurado para All

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Salve e saia do arquivo usando CTRL + X, pressionando y e depois ENTER.

Reinicie o Apache:

$ sudo systemctl restart apache2

Agora, você pode adicionar a diretiva <FilesMatch> no arquivo htaccess:

PHP 5.6

<FilesMatch \.php$>
    # Apache 2.4.10+ can proxy to unix socket
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
</FilesMatch>

PHP 7.4

<FilesMatch \.php$>
    # Apache 2.4.10+ can proxy to unix socket
    SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>

Testar o PHP

Para ver qual versão do PHP seu site está usando, crie um arquivo chamado info.php no diretório raiz do seu site.

$ sudo nano /var/www/html/info.php

Insira o seguinte código:

<?php phpinfo(); ?>

Salve e saia do arquivo usando CTRL + X, pressionando y e depois ENTER.

Agora acesse o seu site assim: http://seusite/info.php

Uma tela parecida com essa deverá aparecer:

phpinfo()

Esse artigo foi traduzido do devanswers

Resumo
Como rodar múltiplas versões do PHP no Apache2
Título
Como rodar múltiplas versões do PHP no Apache2
Descrição
Tutorial de como rodar duas versões do PHP no mesmo servidor Apache. Um tutorial fácil, onde você basicamente precisará apenas copiar e colar.
Autor
Menu
Open chat
Fala Comigo!