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

Menu
Open chat
Fala Comigo!