CentOSphp7upgradeSCL

Problema:

Tengo una instancia de CentOS 7, con el clásico Apache funcionando y por requerimientos de versiones necesito actualizarme a PHP 7 ...pero no lo veo en los repositorios.

Solución utilizada:

  • Utilizando una consola (vuelvo y lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix), iniciamos sesión con permisos administrativos (también se puede usar sudo) y agregamos el repositorio SCL (Software Collections), que incluye versiones actualizadas, como la requerida de php: yum install centos-release-scl
  • Instalamos nuestro php: yum install rh-php70 y las dependencias que necesitemos, se pueden listar con yum list rh-php70\*, en específico se requiere como mínimo soporte para mysql (si se usa) y el manejador de procesos php (FPM-PHP), una instalación básica podría ser: 
    • rh-php70-php-fpm
    • rh-php70-php-mysqlnd
    • rh-php70-php-gd
    • rh-php70-php-pspell
    • rh-php70-php-soap
    • rh-php70-php-bcmath
  • Decirle a apache que use fpm, en /etc/httpd/conf.d/php.conf:

...

<FilesMatch \.php$>

# SetHandler application/x-httpd-php

SetHandler "proxy:fcgi://127.0.0.1:9000"

</FilesMatch>

...

  • Si se necesitan configuraciones adicionales: php.ini esta en /etc/opt/rh/rh-php70/php.ini ...para correr el servicio FPM como otro usuario que no sea apache (tal vez nginx), eso se configuraría en /etc/php-fpm.d/www.conf (no olvidar reiniciar servicios)
  • Iniciar el servicio fpm: service rh-php70-php-fpm start (para dejarlo como autoarranque: systemctl enable rh-php70-php-fpm). No olvidar reiniciar apache: service httpd restart.

 

.