Instalar PHP 8.0 en un equipo con sistema operativo Rocky Linux 8.8. Instalamos también los módulos para acceso desde PHP a MySQL/MariaDB y otros servicios.

Instalar PHP 8 en Rocky Linux 8

En primer lugar, es recomendable actualizar los paquetes y repositorios actuales de Rocky Linux, ejecutando el siguiente comando (que puede tardar varios minutos):

A continuación, revisaremos las versiones de PHP disponibles en el repositorio, con el comando:

Instalar PHP 8 en Rocky Linux 8

En el listado, tenemos disponibles las versiones: PHP 7.2, 7.3, 7.4 y 8.0. En nuestro caso, queremos instalar la versión 8.0, por lo que la activaremos con el siguiente comando:

Es posible que solicite confirmación, responderemos «s» e INTRO.

Instalar PHP 8 en Rocky Linux 8

Para instalar PHP y varios módulos adicionales (soporte para acceso a base de datos MySQL/MariaDB, Zip, CURL, JSON, XML, etc., ejecutaremos el siguiente comando:

Responderemos «s» e INTRO a la confirmación y se instalará PHP 8.0 y los módulos adicionales:

Instalar PHP 8 en Rocky Linux 8

Si ejecutamos ahora el siguiente comando:

Nos devolverá la versión instalada de PHP:

Instalar PHP 8 en Rocky Linux 8 y módulos para acceso a MySQL y otros servicios

Habilitar carga de módulo PHP en Apache

Si disponemos de un servidor web Apache o Nginx en nuestro equipo Rocky Linux, como indicamos en el siguiente tutorial:

Revisaremos que tenemos añadido el módulo PHP para que reconozca y compile los ficheros .php del sitio web. Para ello, en primer lugar, obtendremos el nombre de la librería PHP, con el comando:

Que para PHP 8.0 y Rocky Linux 8.8, nos devuelve: libphp.so

Habilitar carga de módulo PHP en Apache

Editaremos el fichero de configuración de Apache, para averiguar en qué carpeta se almacenan los ficheros de configuración de los módulos. Para ello, editaremos el fichero /etc/httpd/conf/httpd.conf, con:

Y buscaremos el parámetro «Include …» que nos indicará dónde se almacenan los ficheros de configuración de los módulos, normalmente tendrá el siguiente valor:

Include conf.modules.d/*.conf

Habilitar carga de módulo PHP en Apache

Saldremos de la edición sin hacer cambios, pulsando las teclas Control + X y accederemos a la carpeta del Include…», con:

Haremos un «ls» para que nos liste los ficheros de configuración de módulos .conf:

Habilitar carga de módulo PHP en Apache

En los ficheros .conf, editaremos el fichero 20-php.conf (puede tener un nombre diferente, en función de la versión de PHP y de la versión y distribución de Linux), que debe tener, al menos, este contenido:

En caso de no encontrar este fichero, o de no encontrar un fichero con el contenido anterior, lo crearemos.

Si hemos hecho algún cambio en la configuración de PHP o de Apache, es conveniente comprobar que la sintaxis de los ficheros de configuración es correcta, ejecutando el comando:

Si la sintaxis es correcta, devolverá el mensaje: Syntax OK. Si hay algún error, devolverá el error, por ejemplo, forzando un error en el fichero 20-php.conf, devolverá:

Y si hemos hecho cambios, reiniciaremos el servicio de Apache para aplicarlos:

Comprobaremos que el servicio está correctamente iniciado, con:

Que devolverá: Active: active (running)

Habilitar carga de módulo PHP en Apache

Probar servidor web Apache con PHP

Podemos probar el servidor web Apache con PHP agregando a uno de los sitios web del servidor un fichero con el siguiente contenido:

Por defecto, si no usamos VirtualHost, Apache almacenará los ficheros del sitio web en la carpeta que indiquemos el en el parámetro DocumentRoot del fichero de configuración /etc/httpd/conf/httpd.conf. En nuestro caso, hemos cambiado el valor por defecto (inseguro) «/var/www/html» a la carpeta «/var/sw/proyectoa»:

Probar servidor web Apache con PHP

Por lo tanto, para probar PHP y Apache, crearemos un fichero en la carpeta anterior /var/sw/proyectoa, por ejemplo «php_probar.php» (la extensión .php es muy importante), con el comando:

Le añadiremos el siguiente contenido:

Probar servidor web Apache con PHP

Guardaremos el fichero pulsando Control + O y cerraremos la edición pulsando Control + X.

A partir de ahora ya podremos probar el servidor web Apache con PHP. Para ello, desde un equipo de la red del servidor, abriremos un navegador e introduciremos su dirección IP (o nombre DNS si lo tenemos configurado) y el nombre del fichero, quedando:

http://IP_servidor_web_Apache/php_probar.php

Si todo es correcto, mostrará una página con toda la información de PHP y Apache del servidor web (obtenida por la función phpinfo() invocada en el fichero:

Probar servidor web Apache con PHP

Probar módulos de acceso de PHP a MySQL/MariaDB en servidor web Apache sobre Rocky Linux

Para probar el acceso a un servidor de base de datos MySQL o MariaDB, desde nuestro servidor web Apache con PHP, necesitaremos conocer la IP, usuario, contraseña y puerto de acceso a dicho servidor. Una vez que tengamos estos datos, crearemos un fichero PHP en la ruta del sitio web (dónde hemos indicando en el punto anterior), por ejemplo con:

Añadiremos el siguiente contenido al fichero PHP, para conectar al servidor de base de datos con IP 192.168.1.5, con el usuario «usuario», la contraseña «contraseña» y a la base de datos «facturas». Una vez conectados, obtendremos el número de registros de la tabla «factura» y cerraremos la conexión:

Guardaremos los cambios en el fichero php_probar_mysql.php pulsando Control + O y cerraremos la edición pulsando en Control + X.

Si realizamos la prueba, y la conexión es correcta, nos mostrará, vía web, el número de registros de la tabla «factura» en el servidor de base de datos con IP 192.168.1.5, para la base de datos «facturas»:

http://192.168.1.224/php_probar_mysql.php

Probar módulos de acceso de PHP a MySQL/MariaDB en servidor web Apache sobre Rocky Linux

Solución al error 2002 Access Denied al conectar a servidor de MySQL/MariaDB externo desde Rocky Linux con PHP

Si al probar la página web PHP que conecta con MySQL/MariaDB (mostrada en el punto anterior) nos muestra este error:

Solución al error 2002 Access Denied al conectar a servidor de MySQL/MariaDB externo desde Rocky Linux con PHP

Es muy probable que se deba a que tenemos SELinux activado en Rocky Linux. Para comprobar si tenemos activado el parámetro httpd_can_network_connect_db en SELinux, ejecutaremos el comando:

Nos devolverá el valor de activación de todos los parámetros de seguridad para Apache en SELinux. Para habilitar la conexión con un servidor MySQL/MariaDB (u otros) externo, desde PHP y Apache, tendremos que tener activado (a valor «on») el parámetro httpd_can_network_connect_db:

Si lo tenemos a valor «off», como es nuestro caso, lo cambiaremos a valor «on» con el comando: