Clicky

La manera más rápida de actualizar PHP 7.3 a PHP 7.4 en CentOS 8

Actualizar a PHP 7.4

Utilizaremos el repositorio REMI para la instalación de PHP al sistema

Llevo unos recibiendo un aviso en mis sitios Joomla! que debo actualizar la versión de PHP, ahora tengo la PHP 7.3.30 y la versión para que el sitio funcione mejor y más rápido es la 7.4

Vamos por tanto a actualizar PHP 7.3 a PHP 7.4 en un servidor con CentOS 8.4

Es una forma muy sencilla de actualizar y necesitaremos solo unos pocos comandos.

Para este tutorial, utilizaremos los repositorios EPEL y REMI para la instalación de PHP al sistema Linux CentOS 8.4. Por lo tanto, debes añadir a tu sistema los repositorios EPEL y REMI mediante el siguiente comando:

# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

El repositorio REMI contiene los paquetes PHP. Basta habilitar el repositorio correcto para la versión de PHP requerida. Averigua el repositorio disponible para las diferentes versiones de PHP.

# dnf module list php

Esta será la salida del comando:

Last metadata expiration check: 0:37:57 ago on Mon 06 Sep 2021 11:16:25 AM CEST.
CentOS Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 [e] common [d] [i], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

La salida anterior muestra que el AppStream predeterminado contiene PHP 7.2, 7.3 y 7.4 y REMI contiene paquetes PHP 7.2, 7.3, 7.4, 8.0 y 8.1. Empezamos por la instalación de PHP.

Instalar PHP 7.4 en CentOS 8.4

En este momento, el sistema está preparado para la instalación de PHP. PHP 7.4 no es la última versión estable disponible para la instalación. Puedes utilizar la versión más reciente para los servidores de producción que es PHP 8.1 pero yo no lo aconsejo pues puede dar algunos problemas. Puedes utilizar otras versiones de PHP según tus requisitos. Usaremos por tanto REMI 7.4

El primer comando que utilicé:

# dnf module enable php:remi-7.4

Me dio el siguiente error:

Last metadata expiration check: 0:00:43 ago on Mon 06 Sep 2021 11:16:25 AM CEST.
Dependencies resolved.
The operation would result in switching of module 'php' stream 'remi-7.3' to stream 'remi-7.4'
Error: It is not possible to switch enabled streams of a module.
It is recommended to remove all installed content from the module,
and reset the module using 'dnf module reset <module_name>' command.
After you reset the module, you can install the other stream.

Por lo que googleando un poco encontré que la solución es deshabilitar la transmisión de la versión anterior antes de habilitar la nueva, de esta manera:

# dnf module reset php

Esta es la salida del comando:

Last metadata expiration check: 0:07:52 ago on Mon 06 Sep 2021 11:16:25 AM CEST.
Dependencies resolved.
===========================================
Package Architecture Version Repository Size
============================
Resetting modules:
php

Transaction Summary
========================

Is this ok [y/N]: y
Complete!

Ahora procedemos a instalar el módulo 7.4 de REMI:

# dnf module install php:remi-7.4

Esta es la salida resumida del comando:

Upgraded:
php-7.4.23-1.el8.remi.x86_64 php-cli-7.4.23-1.el8.remi.x86_64
php-common-7.4.23-1.el8.remi.x86_64 php-fpm-7.4.23-1.el8.remi.x86_64
php-gd-7.4.23-1.el8.remi.x86_64 php-intl-7.4.23-1.el8.remi.x86_64
php-json-7.4.23-1.el8.remi.x86_64 php-mbstring-7.4.23-1.el8.remi.x86_64
php-mysqlnd-7.4.23-1.el8.remi.x86_64 php-opcache-7.4.23-1.el8.remi.x86_64
php-pdo-7.4.23-1.el8.remi.x86_64 php-pecl-apcu-5.1.20-1.el8.remi.7.4.x86_64
php-pecl-apcu-bc-1.0.5-3.el8.remi.7.4.x86_64 php-pecl-zip-1.19.4-1.el8.remi.7.4.x86_64
php-process-7.4.23-1.el8.remi.x86_64 php-xml-7.4.23-1.el8.remi.x86_64
php-xmlrpc-7.4.23-1.el8.remi.x86_64
Installed:
libsodium-1.0.18-2.el8.x86_64 php-sodium-7.4.23-1.el8.remi.x86_64

Complete!

Como vemos hemos actualizado la versión de PHP a la 7.4.23

Para acabar ejecutamos dnf distro-sync, una opción de sincronización de distribución que se utiliza para sincronizar los paquetes instalados con las últimas versiones disponibles. Hace las actualizaciones necesarias, degrada o mantiene los paquetes instalados seleccionados para que coincidan con la última versión disponible de cualquier repositorio habilitado. Si no se proporciona ningún paquete, se consideran todos los paquetes instalados. La opción de sincronización de distribución de DNF es similar a la opción de actualización de yum

# dnf distro-sync

Esta es la salida resumida del comando:

Upgraded:
clamav-0.103.3-5.el8.x86_64 clamav-filesystem-0.103.3-5.el8.noarch clamav-lib-0.103.3-5.el8.x86_64
clamav-update-0.103.3-5.el8.x86_64 clamd-0.103.3-5.el8.x86_64 webmin-1.981-1.noarch
Downgraded:
libnghttp2-1.33.0-3.el8_2.1.x86_64
Reinstalled:
perl-Mail-Sender-1:0.903-7.el8.noarch

Complete!

Como vemos se han actualizado algunos paquetes más del sistema.

Finalmente comprobamos la versión de PHP que tenemos instalada:

# php -v

PHP 7.4.23 (cli) (built: Aug 24 2021 16:33:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.23, Copyright (c), by Zend Technologies

Jesus_Caceres