Las nuevas versiones de PHP suelen traer nuevas funciones, correcciones de vulnerabilidades o de errores. Pero la migración de una versión a otra puede generar incompatibilidades. Así que tendrás que revisar previamente si tu software es compatible con la versión que vayas a instalar.
Actualmente la última versión estable es PHP 8.0, pero aún no es compatible con la mayoría de aplicaciones. Sería recomendable que un software actualizado utilizará cómo mínimo la versión PHP 7.4. Por ejemplo, WordPress en las versiones 5.6 y 5.7 está ofreciendo "soporte beta" para la última versión estable.
En este artículo explicaremos cómo cambiar el uso de PHP, por ejemplo, de la 7.2 a la 7.4 para una página web con Apache o NGINX como servidor Web. En otras palabras, sería la forma de modificarla si no estás utilizando un panel Webadmin con multiPHP; como por ejemplo, HestiaCP, Plesk, CyberPanel, etc.
En caso de utilizar OpenLiteSpeed el procedimiento es diferente, descarta el apartado "Instalación de otra versión" y pasa directamente a su pestaña de "Configuración para el servicio Web".
Comprobación de versiones:
Para visualizar versiones instaladas en el servidor puedes ejecutar este comando:
# update-alternatives --display php
Puedes visualizar la versión PHP utilizada por defecto ejecutando el siguiente comando:
# php -v
Instalación de otra versión:
Para la instalación de otras versiones es necesario añadir el repositorio para el PHP y realizar un update:
# apt install software-properties-common -y && add-apt-repository ppa:ondrej/php && apt update
Por ejemplo, para instalar la versión PHP 7.4, todos los paquetes requeridos y en este caso para imagen preconfigurada de Wordpress podemos utilizar el siguiente comando:
# apt install php7.4 php7.4-zip php7.4-xmlrpc php7.4-xml php7.4-readline php7.4-opcache php7.4-mysql php7.4-mbstring php7.4-json php7.4-intl php7.4-gd php7.4-fpm php7.4-curl php7.4-common php7.4-cli php7.4-bcmath
Puedes modificar el comando de instalación indicando otra versión que requieras y en el caso que desconozcas los paquetes que utilizas actualmente. Puedes revisarlos con el siguiente comando:
# apt list --installed | grep "php*"
Una vez instalada una nueva versión puedes indicar cuál utilizar por defecto:
# update-alternatives --config php
Deberás indicar numéricamente la versión y posteriormente presionar la tecla Enter. Ejemplo de la asignación:
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php7.4 74 auto mode
1 /usr/bin/php7.2 72 manual mode
2 /usr/bin/php7.4 74 manual mode
Press <enter> to keep the current choice[*], or type selection number: 0
Configuración para el servicio Web:
Para el servicio web NGINX deberás modificar el socket de la versión que quieras utilizar en la configuración del sitio, por ejemplo editándolo con el editor vim:
# vim /etc/nginx/sites-enabled/default
Este es un ejemplo de la configuración del socket en el fichero del site para utilizar PHP 7.4 como versión:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#With php-fpm (or other unix sockets)
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
#With php-cgi (or other tcp sockets)
#fastcgi_pass 127.0.0.1:9000;
}
Posteriormente puedes verificar si la nueva configuración es correcta:
# nginx -t
Si en el anterior comando no da ningún error, reinicia el servicio para efectuar los cambios:
# systemctl restart nginx.service
Para desactivar las versiones de PHP (en este ejemplo php7.2) que no utilizarás puedes ejecutar lo siguiente:
# a2dismod php7.2
Y luego para activar la nueva versión de PHP instalada ejecuta este comando:
# a2enmod php7.4
Si quieres indicar o no utilizar la versión por defecto tendrás que especificarlo en la configuración del fichero del site añadiendo el socket de la versión dentro del virtualhost:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
Comprueba que la modificación de la configuración no contenga errores:
# apache2 -t
Si no contiene errores, reinicia el servicio web Apache para efectuar los cambios realizados:
# systemctl restart apache2.service
En caso de que no tengas instalado el CyberPanel, puedes seguir el siguiente procedimiento. LiteSpeed utiliza paquetes propios para el php y solo están incluidos en el repositorio apt los de versiones de soporte a largo plazo (LTS). Si no tienes disponible el paquete o quieres un EOL deberás añadir su repositorio:
# wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | bash
Para instalar el paquete de la versión php7.4 utiliza el siguiente comando:
# apt update && apt install lsphp74
También puedes instalar paquetes adicionales como módulos mysql, opcache, memcached, redis entre otros:
# apt install lsphp73-mysql lsphp74-memcached lsphp73-opcache
Haciendo clic aquí tienes el enlace oficial donde puedes revisar todas las versiones y paquetes disponibles de PHP para LiteSpeed.
Una vez instalado el paquete correspondiente, deberás acceder a la Consola de WebAdmin y especificar su uso. Por defecto, el servicio no comprueba el directorio donde se ha sido instalado el paquete PHP (/usr/local/lsws/lsphp74).
Los pasos para realizarlo son abrir la consola de WebAdmin, ir a "Configuración del servidor", "Aplicación externa" y hacer clic en "Editar" junto al tipo de "Aplicación LSAPI".
Cambia la ruta en el campo comando lsphp a /usr/local/lsws/lsphp74/bin/lsphp y haga clic en "Guardar" en la parte superior derecha.
De esta forma LiteSpeed utilizará el binario lsphp recién instalado. En el caso que necesites de la utilización de múltiples versiones en vez de modificarlo puedes añadir uno nuevo y luego especificarlo para el virtualhost.
Si has instalado el módulo opcache, no estará habilitado por defecto. Deberás modificar el php.ini de la versión instalada, en este caso en /usr/local/lsws/lsphp74/etc/php.ini agrega lo siguiente:
zend_extension = opcache.so
opcache.enable = 1
Por último, puedes verificar que la página web está utilizando la versión y los módulos requeridos creando el fichero de información de php. Puedes seguir el siguiente procedimiento para crear el archivo phpInfo y revisarlo.