Este tutorial le muestra cómo instalar varias versiones de PHP en Ubuntu y hacer que un host virtual Apache en particular o un bloque de servidor Nginx use uno de ellos. Esto es útil cuando tiene varias aplicaciones web en su servidor, pero una o dos de ellas no son compatibles con la versión de PHP en el repositorio predeterminado de Ubuntu. El repositorio de Ubuntu 18.04 incluye PHP7.2 y el repositorio de Ubuntu 20.04 incluye PHP7.4. Veremos como instalar PHP7.3 ,
Instalar múltiples versiones de PHP en Ubuntu a través de PPA
La forma más sencilla de instalar varias versiones de PHP es mediante el PPA de Ondřej Surý, que es un desarrollador de Debian. Para agregar este PPA, ejecute los siguientes comandos en la terminal. software-properties-common
Se necesita el paquete si desea instalar el software de PPA. Se instala automáticamente en el escritorio de Ubuntu, pero es posible que falte en su servidor Ubuntu.
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update
Ahora puedes instalar PHP8.0 en Ubuntu ejecutando el siguiente comando.
sudo apt install php8.0 php8.0-fpm
E instale algunas extensiones PHP8.0 comunes.
sudo apt install php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl
Puede ver todas las extensiones PHP7.4 disponibles escribiendo sudo apt install php8.0
y presionando Tab
tecla dos veces.
Para instalar PHP7.4 en Ubuntu, ejecute
sudo apt install php7.4 php7.4-fpm
Instale algunas extensiones PHP7.4 comunes.
sudo apt install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl
Puede instalar PHP7.3 de la misma manera. Simplemente reemplace el número de versión en estos comandos.
Sugerencia :PHP5.6, PHP7.0 y PHP7.2 llegaron al final de su vida útil, pero aún puede obtener correcciones de seguridad de este PPA.
Cambiar la versión de PHP en Apache Virtual Host
De forma predeterminada, Apache usa una versión de PHP en todos los hosts virtuales. Si desea utilizar una versión de PHP diferente en un host virtual en particular, deberá deshabilitar el módulo Apache PHP y ejecutar el código PHP a través de PHP-FPM. Comprobar si mod_php
está instalado.
dpkg -l | grep libapache2-mod-php
Si está instalado, debe desactivarlo. Por ejemplo, tengo libapache2-mod-php7.4
instalado en mi servidor Ubuntu 20.04,
Lo desactivo ejecutando:
sudo a2dismod php7.4
También debe deshabilitar el módulo MPM prefork.
sudo a2dismod mpm_prefork
Ahora debe ejecutar el siguiente comando para habilitar tres módulos para usar PHP-FPM, independientemente de si mod_php
está instalado en su servidor.
sudo a2enmod mpm_event proxy_fcgi setenvif
El fragmento de código de configuración de PHP-FPM se encuentra en /etc/apache2/conf-available/
.
Digamos que desea usar PHP8.0 en un servidor virtual Apache, luego abra el archivo de configuración del servidor virtual y agregue la siguiente línea en <VirtualHost>
etiquetas.
Include /etc/apache2/conf-available/php8.0-fpm.conf
Así:
Guarde y cierre el archivo. Luego verifique la sintaxis.
sudo apachectl -t
Reinicie Apache para que el cambio surta efecto.
sudo systemctl restart apache2
Ahora digamos que desea usar PHP7.3 en el host virtual de Mautic porque Mautic no es compatible con PHP7.4, luego agregue la siguiente línea en su host virtual de Mautic entre <VirtualHost>
etiquetas y luego reinicie Apache.
Include /etc/apache2/conf-available/php7.3-fpm.conf
Para probar qué versión de PHP utiliza su host virtual, puede crear un info.php
archivo en la raíz de su documento (digamos /var/www/html
).
sudo nano /var/www/html/info.php
Pegue el siguiente código PHP en el archivo.
<?php phpinfo(); ?>
Guarde y cierre el archivo. Luego, en la barra de direcciones de su navegador, escriba
your-domain.com/info.php
Cambiar la versión de PHP en el bloque del servidor Nginx
Es muy fácil cambiar la versión de PHP en el bloque del servidor Nginx. Como probablemente sepa, Nginx ejecuta código PHP a través de PHP-FPM, que escucha en un socket Unix. El archivo de socket se encuentra en /run/php/
directorio.
Como puede ver en la captura de pantalla, hay varios archivos de socket PHP-FPM (.sock) en mi servidor correspondientes a diferentes versiones de PHP. Su archivo de bloque del servidor Nginx normalmente tiene el siguiente fragmento para conectarse al servidor PHP-FPM.
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
La versión de PHP que utiliza Nginx está determinada por la tercera línea del fragmento. Para usar PHP8.0 en un bloque de servidor Nginx en particular, cambie esa línea a:
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
Para usar PHP7.3 en el bloque del servidor Nginx, cambie esa línea a
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
Estoy seguro de que entiendes la idea ahora. Guarde y cierre el archivo. Luego, vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
Para probar qué versión de PHP usa su bloque de servidor, puede crear un info.php
archivo en la raíz de su documento (digamos /var/www/html
).
sudo nano /var/www/html/info.php
Pegue el siguiente código PHP en el archivo.
<?php phpinfo(); ?>
Guarde y cierre el archivo. Luego, en la barra de direcciones de su navegador, escriba
your-domain.com/info.php
Cómo configurar la versión de PHP predeterminada para la línea de comandos
Si instala una versión más nueva de PHP en Ubuntu, se convertirá en la versión predeterminada para la línea de comandos. Instalé PHP8.0, pero aún quiero PHP7.4 como la versión predeterminada para la línea de comandos.
Para configurar la versión de PHP de la línea de comandos predeterminada, ejecute el siguiente comando.
sudo update-alternatives --config php
Para comprobar la versión actual de PHP de línea de comandos, ejecute
php --version