Ardilla Quio Ardilla Quio

19 de Noviembre de 2010

Instalar varias versiones de PHP en un servidor con Linux (Debian)

Recientemente instalé un nuevo servidor en un equipo con Debian squeeze. El servidor web (Apache 2), PHP y MySQL los instalé de forma automática con apt.

La versión de PHP instalada fue la 5.3.2 y dado que venía trabajando en una 5.2.14 empecé a detectar algunos errores, que pude solucionar fácilmente. El problema es que sigo necesitando la versión antigua. Entonces me entra la duda: ¿puedo tener dos versiones distintas de PHP en un mismo servidor?

La respuesta es sí, y de una manera sencilla.

Primero debemos instalar unos paquetes requeridos, la mayoría ya instalados generalmente:

apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common

Si ya tenemos una versión de PHP en nuestro servidor, para este caso, la desactivaremos, descargaremos y volveremos a instalar desde cero, para lo cual ejecutamos el comando:

a2dismod php5

O, en caso de que fuese PHP4 la versión instalada:

a2dismod php4

Esto lo realizaremos cada vez que queramos una nueva versión de PHP.

Después deberemos descargar las versiones que deseemos instalar. Podemos hacerlo desde php.net. Una vez descargadas deberemos desempaquetarlas, compilarlas e instalarlas.

Supongamos que el directorio donde descargamos y desempaquetamos las versiones de PHP está en la ruta /home/sources/php-5.3.2: nos situaremos en ella y entonces compilaremos cada versión:

./configure --prefix=/usr/local/php/php_5.3.2 --with-apxs2=/usr/bin/apxs2 --with-mysql
make 
make install

Esta es una compilación básica de PHP, cada usuario deberá compilar según sus propias necesidades.

A continuación deberemos crear un archivo php.ini en /usr/local/php/php_5.3.2/lib/, podemos copiar el php.ini-recommended cambiando el nombre.

Movemos el archivo generado en la compilación /usr/lib/apache2/modules/libphp5.so a /usr/local/php/php_5.3.2/modules/.

Creamos ahora el fichero de configuración /usr/local/php/php5.3.2.conf con el contenido:

LoadModule php5_module /usr/local/php/php_5.3.2/modules/libphp5.so

Esto lo repetimos tantas veces como versiones queramos instalar.

Incluimos al final del archivo de configuración /etc/apache2/httpd.conf la siguiente línea:

Include /etc/apache2/php.conf

Finalmente generamos un script que nos permita cambiar de versión cómodamente:

/bin/php.sh

#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1 => PHP 5.2.14
2 => PHP 5.3.2
CABECERAMENU
echo -n "Ingrese su eleccion: "
read opcion
echo
case $opcion in
"1")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php5.2.14.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
"2")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php5.3.2.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
*)
echo "Opcion no valida"
;;
esac

Con esto tendremos las distintas versiones de PHP, pudiendo decidir cual queremos usar ejecutando un simple script.

Podemos ver la fuente de la información en TechnoBlog.

4 comentarios

William Finol

29/05/2017 19:36:26

Me da el siguiente error cuando compilo

Makefile:442: recipe for target 'ext/dom/documenttype.lo' failed

que debo hacer?

Jairnet

25/08/2016 09:27:16

Excelente, la mayoria de los post explican para tener simultaneamente (se les agradece) las versiones. pero para efecto de prueba es más simple este procedimiento si solo tenemos un proyecto. Gracias

Carlos

23/02/2012 15:40:40

hola, pueden explicar como configurar el virtualhost para tener varias versiones de php funcionando al mismo tiempo

Anónimo

10/11/2011 20:56:26

Hola está muy buena la información, a mi me ayudo puesto que actualice el php a 5.3 y tenia decenas de páginas en joomla 1.0 y 1.5 que no están soportadas por esa versión.

Pero además se puede cargar el modulo manualmente en los virtualhost's para tener ambas versiones funcionando al mismo tiempo.

Saludos.

Comentario anónimo
Comentar como usuario