Instalar dos versiones de PHP en Debian 8 o en Debian 9

En un servidor que tengo con Debian 8 (esto mismo es aplicable a Debian 9) necesito tener PHP 7.0 y PHP 7.3 para poder actualizar las instalaciones que están con PHP 7.0 sin tener interrumpido el servicio.

Para ello actualizo los paquetes:

$ sudo apt update && sudo apt upgrade

Luego instalo varios paquetes necesarios:

$ sudo apt install -y apt-transport-https lsb-release ca-certificates

Añado el DPA (Debian Package Archive) disponible en https://deb.sury.org/ , ya que la versión oficial no se encuentra tan actualizada.

$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$ sudo apt update

A continuación consulto los paquetes disponibles en este DPA

$ sudo apt search php7.3

Para finalizar instalo los paquetes que necesito vinculados con PHP 7.3:

$ sudo apt install -y php7.3-common \
php7.3 \
php7.3-cli \
php7.3-common \
php7.3-curl \
php7.3-fpm \
php7.3-gd \
php7.3-json \
php7.3-mbstring \
php7.3-mysql \
php7.3-opcache \
php7.3-readline \
php7.3-sqlite3 \
php7.3-xml \
php7.3-zip

Si consulto la versión de PHP ya me aparece PHP 7.3

$ php -v
PHP 7.3.2-3+0~20190208150759.31+jessie~1.gbp0912bd (cli) (built: Feb 8 2019 23:17:46) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.2-3+0~20190208150759.31+jessie~1.gbp0912bd, Copyright (c) 1999-2018, by Zend Technologies

Si busco el PHP 7.0, sigue disponible en /usr/bin/php7.0

$ which php7.0
/usr/bin/php7.0

Además PHP 7.3 está disponible en /usr/bin/php7.3

$ which php7.3
/usr/bin/php7.3

Si busco el ejecutable por defecto de PHP, me encuentro que está diponible en /usr/bin/php

$ which php
/usr/bin/php

Si compruebo el contenido del directorio /usr/bin veo que /usr/bin/php es un enlace simbólico a /etc/alternatives/php

$ ls /usr/bin/php* -laht
/usr/bin/php7.3
/usr/bin/php7.0
/usr/bin/php -> /etc/alternatives/php

Y si compruebo el contenido del destino de ese enlace simbólico /etc/alternatives/php, vuelvo a encontrar otro enlace simbólico al ejecutable de PHP 7.3, que se encuentra en /usr/bin/php7.3

$ ls -laht /etc/alternatives/php
lrwxrwxrwx 1 root root 15 Feb 20 18:52 /etc/alternatives/php -> /usr/bin/php7.3

Este es el motivo de que PHP 7.3 sea la versión de CLI por defecto de PHP tras esta instalación.

Lo siguiente es comprobar la configuración del FPM. Puedo ver que en /etc/php/ hay 2 directorios, uno para la configuración con PHP 7.0 y otro para la configuración con PHP 7.3:

$ ls -1 /etc/php/
7.0
7.3

Ahora ya puedo realizar la configuración del FPM para que nginx o Apache usen el FPM con PHP 7.0 o PHP 7.3, en función de las necesidades de cada proyecto.

Esta misma instalación podría llevarse a cabo para instalar PHP 7.2, cambiando php7.3 por php7.2 en los comandos “sudo apt search” y “sudo apt install”.

Un último consejo: si es posible, migra todos los proyectos a PHP 7.3, ya que PHP 7.0 no tiene soporte.

2 comments

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.