To bit or not to bit, ingeniera en desarrollo de software, criadora de mantis, mujer transgénera
Ingeniería de software

Apache 2 httpd no recarga php.ini cuando usamos php-fpm en CentOS 8

Es normal estar configurando php y apache cuando empezamos con una nueva instalación LAMP, para esto editamos el archivo php.ini y el archivo httpd.conf y reiniciamos el servidor, pero a veces nos encontramos con algunos problemas.

Caso: No esta claro que archivo php.ini esta recargando

Si tenemos problemas al hacer esto normalmente podemos escribir un archivo phpinfo.php en nuestro directorio htdocs y escribir el siguiente código:

<?php
   phpinfo();
?>

Después, probar en el navegador la URL hacia nuestro nuevo archivo (pej. http://localhost/phpinfo.php) y buscar la línea donde se indica que archivo php.ini se está usando, como en la imagen:

phpinfo
phpinfo();

También podemos buscar que archivo estamos usando con el código:

<?php
    echo php_ini_loaded_file();
?>

Ya identificado que archivo php.ini estamos usando en nuestro apache, sabemos que archivo hay que editar, pero hay que recordar reiniciar el servidor apache.

[root@localhost ~]# systemctl stop httpd
[root@localhost ~]# systemctl start httpd

Caso: Estamos usando fpm y el archivo php.ini no recarga al reiniciar httpd

Normalmente para mi siempre ha sido muy rápido configurar php y apache pero esta vez me costo trabajo por que instale todos los módulos que pudiera ocupar con php desde el repositorio, y esto incluyó php-fpm, lo cual al principio no tenía claro, hasta que al ejecutar phpinfo() vi que el Server API que estaba usando era distinto al Apache Handler al que estaba acostumbrada, al investigar me gustó la idea la idea de usar FPM para buscar eficientar mis llamadas a PHP en Apache y busqué un poco como me estaba afectando.

Resulta que php-fpm funciona como un servicio o demonio cargado, tipo maquina virtual que esta prendido esperando llamadas desde el httpd, una de mis pruebas al cambiar el archivo php.ini consistía en llamar por línea de comando algo como php -r "phpinfo();" o ejecutar archivos con funciones y código (pej php prueba.php) para probar si sí estaba agarrando los cambios al php.ini, lo que sí sucedía y era desesperante ver, pero en el navegador usando apache no los agarraba, normalmente para alguien que no es muy diestro en esto pensaríamos que le falta reiniciar el httpd para que agarre la nueva configuración de php.ini pero ese no era el problema.

Buscando, encontré que lo que necesitaba era reiniciar/recargar el php-fpm, por que cuando inicias httpd en efecto se inician servicios de php-fpm pero cuando reinicias apache no se reinicia el php-fpm, entonces el comando que me faltaba ejecutar es el siguiente:

[root@localhost ~]# systemctl reload php-fpm

Conclusiones

Cuando buscamos corregir un error, siempre hay que buscar tomando en cuenta todas las variables, aquí encontré el camino a la respuesta al ver el Server API de phpini().

Todavía soy muy novata con php-fpm pero me gusta la idea de probar esta tecnología.

Como siempre si les gusta compartan y si no también.