Supongamos que tenemos un servidor Web LAMP (típicamente Linux+Apache+PHP+MySQL/MariaDB) con Apache y diferentes versiones de PHP instaladas y necesitamos cambiar la versión de PHP en uso por Apache (por ejemplo necesitamos pasar de PHP 5.6 a PHP 7.0). Este artículo explica los simples pasos para llevar a cabo esta tarea.
El servidor en cuestión cuenta con los módulos de Apache para las versiones de PHP 5.6 y 7.0 desde paquete:
root@devuan:~# apt-cache search libapache2-mod-php libapache2-mod-php - server-side, HTML-embedded scripting language (Apache 2 module) (default) libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module) libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2 module)
Ambos se encuentran actualmente instalados:
root@devuan:~# dpkg -l | grep libapache2-mod-php ii libapache2-mod-php5 5.6.40+dfsg-0+deb8u4 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-php7.0 7.0.33-0+deb9u3 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
El primer paso consiste en verificar qué módulos de Apache están cargados, particularmente qué módulo de PHP está cargado:
root@devuan:~# apache2ctl -t -D DUMP_MODULES | grep php php5_module (shared)
Se observa que el servidor Apache utiliza PHP 5.6 y se desea cambiar a 7.0.
Verificar qué módulos de PHP se encuentran disponibles para utilizar:
root@devuan:~# ll /usr/lib/apache2/modules/ | grep php -rw-r--r-- 1 root root 9926688 Jun 3 09:57 libphp5.so -rw-r--r-- 1 root root 4307304 Mar 8 10:01 libphp7.0.so
Como era de esperarse, ambos módulos se encuentran disponibles. De lo contrario es posible instalar el módulo de Apache para la versión 7.0 de PHP ejecutando: apt-get install libapache2-mod-php7.0
.
Cabe destacar que sólo es posible cargar una versión de módulo de PHP en todo momento- En este caso se deberá optar por 5.6 o 7.0.
Comenzar deshabilitando el módulo "php5":
root@devuan:~# a2dismod php5 Module php5 disabled. To activate the new configuration, you need to run: service apache2 restart
Luego habilitar el módulo "php7.0" (o "php7.1", "php7.2", "php7.3" dependiendo de la versión instalada/disponible):
root@devuan:~# a2enmod php7.0 Considering dependency mpm_prefork for php7.0: Considering conflict mpm_event for mpm_prefork: Considering conflict mpm_worker for mpm_prefork: Module mpm_prefork already enabled Considering conflict php5 for php7.0: Enabling module php7.0. To activate the new configuration, you need to run: service apache2 restart
Se debe realizar en este orden por lo anteriormente mencionado: primero deshabilitar el módulo en uso y luego habilitar el nuevo.
Finalmente, reiniciar el servidor Apache:
root@devuan:~# service apache2 restart [ ok ] Restarting Apache httpd web server: apache2.
Eso es todo.