Como tener dos versiones de PHP en el mismo servidor Apache

Problema: Por ejemplo, si tienes una aplicación de Symfony4 que necesita PHP7.2+, y una tienda online con Magento2 que necesita PHP 7.0 pero es incompatible con PHP7.2.

Solución: Instalas ambos PHP, y el modulo PHP7.0-fpm y PHP7.2-fpm.

Según la documentacion, FPM (FastCGI Process Manager) es una implementación alternativa al PHP FastCGI con algunas características adicionales (la mayoría) útiles para sitios web con mucho tráfico.

Si tu servidor no tiene acceso a varias versiones de PHP a través de los repositorios, te tocará instalar el repositorio más actualizado, aunque no es el oficial.

apt-get install python-software-properties
add-apt-repository ppa:ondrej/php
apt-get update

Como instalar el módulo PHP-FPM en Apache

sudo apt-get install php7.0-fpm

Cambia Apache al modo “event” y habilita FCGI

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo a2enmod proxy_fcgi

Pero ten cuidado, al instalar y configurar PHP-FPM, ahora tu fichero de configuración php.ini de PHP ha cambiado:
/etc/php/7.0/apache2/php.ini => /etc/php/7.0/fpm/php.ini

¿Pero como haces para que cada sitio o carpeta se ejecute una versión de PHP u otra?

Fácil. En el VirtualHost, ya sea por directorio o por sitio web completo, agregas el siguiente código:
Include "conf-available/php7.0-fpm.conf"

Como en el ejemplo, coge php7.2 por defecto, y luego por directorio el que decidas.

Y por último, Reinicia Apache

sudo service apache2 restart

Y si tienes Vagrant…

Puedes comprobar lo arriba mencionado con esta configuración Vagrantfile. Despues de inicializar la máquina virtual tienes que conectarte a la raíz de la ip que te de para comprobar la versión de PHP, y luego prueba con “/sitephp70” para confirmarlo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *