# rm-rf.es

Cómo instalar PHP 7.3 en CentOS 7 ó RHEL

A día de hoy, la versión estable ofrecida a través de los repositorios oficiales de CentOS 7 (y entiendo que igualmente en RHEL 7) es la 5.4.16:

# yum info  php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile

Available Packages
Name        : php
Arch        : x86_64
Version     : 5.4.16
Release     : 46.el7
Size        : 1.4 M
Repo        : base/7/x86_64
Summary     : PHP scripting language for creating dynamic web sites
URL         : http://www.php.net/
License     : PHP and Zend and BSD
Description : PHP is an HTML-embedded scripting language. PHP attempts to make it
            : easy for developers to write dynamically generated web pages. PHP also
            : offers built-in database integration for several commercial and
            : non-commercial database management systems, so writing a
            : database-enabled webpage with PHP is fairly simple. The most common
            : use of PHP coding is probably as a replacement for CGI scripts.
            : 
            : The php package contains the module (often referred to as mod_php)
            : which adds support for the PHP language to Apache HTTP Server.

Pese a que probablemente la versión compilada de PHP para RHEL y CentOS 7 se encuentre al día en lo que a parches de seguridad se refiere, siendo que la versión estable de PHP es la 7.3, es altamente recomendable instalarla, tanto por sus numerosas mejoras a nivel de seguridad como de rendimiento.

Cómo instalar PHP 7 en RHEL 7/CentOS 7

Los repositorios de EPEL y Remi ofrecen, a día de hoy, la versión 7.3 de PHP precompilada y en paquete RPM lista para su descarga e instalación. Únicamente hay que asegurarse de tener estos repositorios configurados a nivel de sistema/yum:

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

Confirmamos que tenemos cargados los repos:

# yum repolist | egrep -e 'epel|remi'
 * epel: mirrors.coreix.net
 * remi-php73: remi.mirror.ate.info
 * remi-safe: remi.mirror.ate.info
epel/x86_64           Extra Packages for Enterprise Linux 7 - x86_64      13,051
remi-php73            Remi's PHP 7.3 RPM repository for Enterprise Linux     306
remi-safe             Safe Remi's RPM repository for Enterprise Linux 7 -  3,188

Si os fijáis, también instalamos el paquete yum-utils, pues permite establecer a posteriori el repositorio a utilizar para un determinado paquete. Esto es extremadamente útil para evitar conflictos de versiones entre repositorios. Como nosotros queremos instalar PHP 7.3, así lo especificamos para que sea la rama por defecto de nuestro sistema a la hora de instalar cualquier paquete de PHP:

# yum-config-manager --enable remi-php73

Loaded plugins: fastestmirror
===================================================================================== repo: remi-php73 =====================================================================================
[remi-php73]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7
baseurl = 
cache = 0
cachedir = /var/cache/yum/x86_64/7/remi-php73
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage = 
enabled = 1
enablegroups = True
exclude = 
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7/remi-php73/gpgcadir
gpgcakey = 
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7/remi-php73/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
hdrdir = /var/cache/yum/x86_64/7/remi-php73/headers
http_caching = all
includepkgs = 
ip_resolve = 
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid = 
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink = 
minrate = 0
mirrorlist = http://cdn.remirepo.net/enterprise/7/php73/mirror
mirrorlist_expire = 86400
name = Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - x86_64
old_base_cache_dir = 
password = 
persistdir = /var/lib/yum/repos/x86_64/7/remi-php73
pkgdir = /var/cache/yum/x86_64/7/remi-php73/packages
proxy = False
proxy_dict = 
proxy_password = 
proxy_username = 
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert = 
sslclientcert = 
sslclientkey = 
sslverify = True
throttle = 0
timeout = 30.0
ui_id = remi-php73
ui_repoid_vars = releasever,
   basearch
username = 

Si quisieramos utilizar la versión 7.2 en lugar de la 7.3, sería así:

# yum-config-manager --enable remi-php72

Finalmente ya sólo queda instalar PHP y los módulos que necesitemos. Mirad que no tenemos que especificar la versión ya que hemos establecido la rama previamente con yum-config-manager, disponible gracias a la instalación de yum-utils.

# yum install php php-gd  php-mcrypt php-mysql

Confirmamos en la salida de la instalación que vamos a instalar la 7.3:

Dependencies Resolved

============================================================================================================================================================================================
 Package                                              Arch                                Version                                             Repository                               Size
============================================================================================================================================================================================
Installing:
 php                                                  x86_64                              7.3.4-1.el7.remi                                    remi-php73                              3.2 M
 php-gd                                               x86_64                              7.3.4-1.el7.remi                                    remi-php73                               79 k
 php-mysqlnd                                          x86_64                              7.3.4-1.el7.remi                                    remi-php73                              231 k
 php-pecl-mcrypt                                      x86_64                              1.0.2-2.el7.remi.7.3                                remi-php73                               29 k

Una vez instalado, ya podéis confirmar que es la versión 7.3 ejecutando un php -v.

# php -v
Salir de la versión móvil