Como instalar PHP 5.6, PHP 7.0, PHP 7.1, PHP 7.2, PHP 7.3 com Nginx no Ubuntu 18.04LTS

Requisitos:
  • Ubuntu 18.04 LTS

A instalação em paralelo do PHP 5.6, PHP 7.0, PHP 7.1, PHP 7.2 com Nginx é bastante simples, basta seguir os passos abaixo:

Instalando o repositório e as diferentes versões do PHP

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

$ sudo apt install php5.6 php5.6-fpm
$ sudo apt install php7.0 php7.0-fpm
$ sudo apt install php7.1 php7.1-fpm
$ sudo apt install php7.2 php7.2-fpm
$ sudo apt install php7.3 php7.3-fpm

$ sudo systemctl status php5.6-fpm
$ sudo systemctl status php7.0-fpm
$ sudo systemctl status php7.1-fpm
$ sudo systemctl status php7.2-fpm
$ sudo systemctl status php7.3-fpm

Instalando o Nginx

$ sudo apt install nginx

Configurando o Nginx com PHP 5.6, PHP 7.0, PHP 7.1, PHP 7.2 e PHP 7.3

$ sudo mkdir /var/www/php56
$ sudo mkdir /var/www/php70
$ sudo mkdir /var/www/php71
$ sudo mkdir /var/www/php72
$ sudo mkdir /var/www/php73

O comando abaixo cria arquivos em /var/www/phpXX/index.php e insere o conteúdo <?php phpinfo(); em cada arquivo. Caso não consiga por algum motivo, tente o comando $sudo gedit /var/www/phpXX/index.php:

$ sudo echo "<?php phpinfo(); ?>" > /var/www/php56/index.php
$ sudo echo "<?php phpinfo(); ?>" > /var/www/php70/index.php
$ sudo echo "<?php phpinfo(); ?>" > /var/www/php71/index.php
$ sudo echo "<?php phpinfo(); ?>" > /var/www/php72/index.php
$ sudo echo "<?php phpinfo(); ?>" > /var/www/php73/index.php

Configurando o PHP 5.6 no Nginx

$ sudo nano /etc/nginx/sites-available/php56.local

Cole esta configuração dentro do arquivo:

# PHP 5.6
server {
    listen 8056;
    root /var/www/php56;
    index index.php;
    server_name php56.local;
    location ~* \.php$ {
        fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}

Configurando o PHP 7.0 no Nginx

$ sudo nano /etc/nginx/sites-available/php70.local

Cole esta configuração dentro do arquivo:

# PHP 7.0
server {
    listen 8070;
    root /var/www/php70;
    index index.php;
    server_name php70.local;
    location ~* \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}

Configurando o PHP 7.1 no Nginx

$ sudo nano /etc/nginx/sites-available/php71.local

Cole esta configuração dentro do arquivo:

# PHP 7.1
server {
    listen 8071;
    root /var/www/php71;
    index index.php;
    server_name php71.local;
    location ~* \.php$ {
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}

Configurando o PHP 7.2 no Nginx

$ sudo nano /etc/nginx/sites-available/php72.local

Cole esta configuração dentro do arquivo:

# PHP 7.2
server {
    listen 8072;
    root /var/www/php72;
    index index.php;
    server_name php72.local;
    location ~* \.php$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}

Configurando o PHP 7.3 no Nginx

$ sudo nano /etc/nginx/sites-available/php73.local

Cole esta configuração dentro do arquivo:

# PHP 7.3
server {
    listen 8073;
    root /var/www/php73;
    index index.php;
    server_name php73.local;
    location ~* \.php$ {
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}

Habilitando as configurações (anteriores) no Nginx

$ sudo ln -s /etc/nginx/sites-available/php56.local /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/php70.local /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/php71.local /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/php72.local /etc/nginx/sites-enabled/

$ sudo systemctl restart nginx

Configurando o hosts com os novos domínios

$ sudo echo "127.0.0.1    php56.local" > /etc/hosts
$ sudo echo "127.0.0.1    php70.local" > /etc/hosts
$ sudo echo "127.0.0.1    php71.local" > /etc/hosts
$ sudo echo "127.0.0.1    php72.local" > /etc/hosts

Comentários e notas explicativas

Este cenário permite que você utilize as diferentes versões do PHP informando um nome de domínio (local) e uma porta específica. Por exemplo: para ter acesso ao PHP 5.6, abra o navegador e digite http://php56.local:8056; para ter acesso ao PHP 7.0, abra o navegador e digite http://php70.local:8070; e assim por diante.

Observe que neste cenário eu configurei um nome de domínio (local) para cada diferente versão do PHP. Poderiam todas as diferentes versões serem no mesmo domínio (localhost) e separados por diferentes portas (ex: 8056, 8070, 8071, 8072, 8073). Ao mesmo tempo, poderiam todas as diferentes versõs estarem em domínios diferentes (php56.local, php70.local, php71.local, php72.local, php73.local) e utilizando uma mesma porta (80).

Os ajustes e detalhes da configuração ficam a seu critério.

Agradecemos a Ondřej Surý pelo repositório!

Comentários

Postagens mais visitadas deste blog

Configurar teclado americano com acentuação em português + Ç no Ubuntu 18.04LTS e 20.04LTS

Como instalar a impressora Epson L395 via wi-fi no Ubuntu 18.04 LTS e Ubuntu 20.04 LTS