Ubuntu 18.04 Server: Cómo Actualizar PHP de Forma Segura
Para cambiar PHP a la última versión en Ubuntu 18.04 Server, primero verifique el soporte y la compatibilidad del sistema operativo y las aplicaciones, luego pruebe el nuevo PHP en un servidor Ubuntu compatible antes de cambiar. Simplemente agregar repositorios externos y realizar una actualización completa de paquetes, como en el pasado, no garantiza la versión de PHP deseada ni que el servidor web la use.
Puntos a verificar primero en Ubuntu 18.04
El mantenimiento de seguridad general para Ubuntu 18.04 LTS terminó en mayo de 2023. El mantenimiento de seguridad extendido (ESM) de Ubuntu Pro proporciona parches de seguridad adicionales para los paquetes aplicables, pero no significa soporte para todos los repositorios externos ni para todas las versiones de PHP. Verifique el período de soporte de Ubuntu 18.04 y la cobertura de su suscripción y paquetes actuales.
Debería distinguir entre las versiones soportadas por el proyecto PHP y los paquetes para los cuales la distribución proporciona parches de seguridad. Incluso si los números de versión de los paquetes de Ubuntu permanecen iguales, los arreglos de seguridad pueden aplicarse, mientras que los paquetes externos no reciben automáticamente garantías de Ubuntu Pro. Revise tanto las versiones de PHP oficialmente soportadas como la política del proveedor del paquete.
A largo plazo, se recomienda instalar un Ubuntu LTS soportado en un servidor nuevo y trasladar el servicio. Al actualizar el servidor existente en el lugar, no se pueden omitir las versiones LTS, por lo que primero debe pasar de 18.04 a 20.04 y luego continuar secuencialmente. Para pasos detallados, consulte Guía de Actualización de Ubuntu Server.
Verifique la configuración actual de PHP y del servidor web
Antes de cambiar el servidor de producción, registre la versión de la interfaz de línea de comandos (CLI), las extensiones cargadas y los paquetes instalados. Los siguientes comandos recuperan información, pero algunos comandos pueden fallar si PHP no está instalado.
lsb_release -a
php -v
php --ini
php -m
dpkg -l 'php*' | grep '^ii'
apt-cache policy php
php -v es la versión de CLI. La versión y la configuración del módulo de Apache o PHP-FPM (Administrador de Procesos FastCGI) utilizado para solicitudes web pueden diferir. En Apache, verifique los módulos activos con apache2ctl -M, y en las configuraciones de sitios de Nginx o Apache, verifique el socket o la dirección a la que apunta FastCGI. Si se utiliza PHP-FPM, se debe verificar junto con la lista de servicios y la configuración del servidor web.
systemctl list-units --type=service --all 'php*-fpm.service'
sudo apache2ctl -M
En los servidores que no usan Apache, no es necesario ejecutar el segundo comando. Haga una copia de seguridad de los archivos de configuración, archivos del sitio, bases de datos y archivos subidos, y revise los procedimientos de restauración. Mantenga de forma segura las configuraciones que contengan contraseñas o información personal.
Elegir una nueva versión y preparar un entorno de prueba
- Verifique qué versiones de PHP son compatibles con la aplicación, los plugins y las dependencias. Los cambios de versión principal en PHP pueden causar un comportamiento incompatible, así que revise la guía de migración de PHP desde la versión actual hasta la versión destino.
- Seleccione una combinación de Ubuntu y PHP compatible y prepare un servidor de prueba separado del entorno de producción. Use copias de seguridad restaurables y preste atención a proteger los datos reales de los usuarios.
- Registre las extensiones PHP necesarias y busque paquetes adecuados para el nuevo entorno. La necesidad de controladores de base de datos, procesamiento de imágenes, XML, ZIP, etc., varía según la aplicación.
- En el servidor de prueba, verifique el inicio de sesión, las conexiones a la base de datos, la carga de archivos, las tareas programadas y las principales pantallas, y revise los registros de errores. Si hay problemas, modifique la aplicación y las extensiones, y luego pruebe de nuevo.
Ejemplo: Instalación de PHP 8.3 en un servidor de prueba Ubuntu 24.04
A continuación se muestra un ejemplo de instalación de PHP 8.3 CLI y PHP-FPM en un nuevo servidor de prueba Ubuntu 24.04 LTS, no Ubuntu 18.04. PHP 8.3 no siempre significa que es la versión más reciente. Verifique el período de soporte para la versión seleccionada de Ubuntu y la lista de paquetes de PHP 8.3 para Ubuntu 24.04, y agregue solo las extensiones requeridas por su aplicación.
Primero, revise los candidatos de paquetes y el plan de cambios. Si no hay candidatos o si la lista de eliminación/cambio es diferente de lo esperado, no instale y verifique el repositorio y las dependencias.
sudo apt update
apt-cache policy php8.3-cli php8.3-fpm
apt-get -s install php8.3-cli php8.3-fpm
Si los resultados en el servidor de prueba son apropiados, instale y verifique el estado. El comando a continuación no configura el servidor web para usar PHP-FPM automáticamente.
sudo apt install php8.3-cli php8.3-fpm
php8.3 -v
php8.3 -m
systemctl status php8.3-fpm --no-pager
Por ejemplo, si una aplicación requiere conexiones a MySQL o MariaDB, revise php8.3-mysql por separado en ese entorno. Dado que los archivos de configuración y las extensiones pueden diferir entre CLI y FPM, verifique los ajustes y servicios del nuevo FPM. Después de instalar el paquete, ajuste la configuración FastCGI del servidor web para que coincida con el socket FPM del servidor de prueba, y después de pasar la verificación de configuración del servidor web, recárguelo. El método del módulo Apache se configura por separado y no debe confundirse con FPM.
Verificar la configuración web y recuperar el servicio ante problemas
No se puede verificar la versión de PHP de un sitio web usando solo la versión CLI. Verifique la configuración activa del servidor web junto con los servicios FPM y los registros, y en un entorno de prueba restringido, confirme a través de la página de estado de la aplicación o las herramientas de administración si las solicitudes web están usando el nuevo PHP. No deje una página phpinfo() que exponga configuraciones detalladas del servidor en un lugar accesible públicamente.
Antes de la transición real, planifique una ventana de mantenimiento, la sincronización de datos y los puntos de recuperación. Después de cambiar los servicios, verifique las funciones clave y los registros de errores del servidor web y de PHP. Si hay problemas, vuelva a la configuración de conexión del servidor web previamente guardada, realice verificaciones de configuración y recargue, o redirija el tráfico de nuevo al servidor antes de la transición. Si la estructura de la base de datos ha cambiado, simplemente revertir la versión de PHP puede no restaurar la funcionalidad, por lo que los planes de copia de seguridad y restauración de datos deben usarse conjuntamente.
Tenga cuidado con los repositorios externos y las actualizaciones completas
El método anterior en este artículo agregó ppa:ondrej/php y ejecutó apt-get upgrade. Si los repositorios externos actualmente soportan Ubuntu 18.04 y la versión deseada de PHP lo determina el proveedor, y simplemente agregar un repositorio no garantiza el mantenimiento de seguridad. apt-get upgrade afecta no solo a PHP sino también a otros paquetes que pueden actualizarse.
Antes de agregar o eliminar repositorios en un servidor de producción, revise las fuentes de paquetes, las dependencias que puedan cambiar y los métodos de recuperación. También debe verificar cómo el servidor web maneja PHP por separado, ya que activar solo una versión diferente del módulo de Apache mientras se deja el módulo PHP antiguo tal como está puede causar conflictos de configuración.




