Blog de tecnologia
Como instalar varias versiones de PHP en la misma maquina
Muchas veces es necesario sobre todo para desarrolladores hacer pruebas con varias versiones de PHP. En este articulo presentamos una manera de instalar tantas versiones de PHP como queramos con la única restricción que obviamente podemos usar una a la vez.
Al final hay un script que nos permite fácilmente elegir que versión queremos usar. El primer paso es instalar Apache, Mysql y todos los paquetes de desarrollo que necesitaremos para compilar PHP. Cabe aclarar que según los parámetros que le pasemos al configure podemos necesitar mas paquetes. Para este ejemplo haremos la instalación mas simple solo con soporte de Mysql. instalaremos las versiones de PHP 5.3.2, 5.2.13 y 4.4.9. Y se asume que haremos la instalación en KUbuntu 9.10 y con un usuario prueba que tiene permiso para hacer sudo.
En mi instalación de KUbuntu 9.10 el archivo /etc/apache2/httpd.conf esta vacío y la instalación de PHP requiere que por lo menos tenga una sentencia Load Module así que le agregamos las siguientes lineas (En caso que contenga alguna sentencia LoadModule saltear este paso)
# Dummy LoadModule directive to aid module installations
#LoadModule dummy_module /usr/lib/apache2/modules/mod_dummy.so
Instalamos los paquetes requeridos usando
sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common libapache2-mod-auth-mysql mysql-server-5.1
sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common libapache2-mod-auth-mysql mysql-server-5.1
Descargamos y descompactamos las tres versiones de PHP
mkdir /home/prueba/sources
cd /home/prueba/sources
wget http://www.php.net/get/php-5.3.2.tar.gz/from/ar.php.net/mirror
wget http://www.php.net/get/php-4.4.9.tar.gz/from/this/mirror
wget http://www.php.net/get/php-5.2.13.tar.gz/from/this/mirror
tar -xvzf php-5.2.13.tar.gz
tar -xvzf php-4.4.9.tar.gz
tar -xvzf php-5.3.2.tar.gz
mkdir /home/prueba/sources
cd /home/prueba/sources
wget http://www.php.net/get/php-5.3.2.tar.gz/from/ar.php.net/mirror
wget http://www.php.net/get/php-4.4.9.tar.gz/from/this/mirror
wget http://www.php.net/get/php-5.2.13.tar.gz/from/this/mirror
tar -xvzf php-5.2.13.tar.gz
tar -xvzf php-4.4.9.tar.gz
tar -xvzf php-5.3.2.tar.gz
Compilamos e instalamos PHP 5.3.2 (Verificar que no se produce ningún error durante la compilación e instalación)
cd /home/prueba/sources/php-5.3.2/
sudo ./configure --prefix=/usr/local/php/php_5.3.2 --with-apxs2=/usr/bin/apxs2 --with-mysql
sudo make
sudo make install
sudo cp php.ini-recommended /usr/local/php/php_5.3.2/lib/php.ini
sudo mkdir /usr/local/php/php_5.3.2/modules
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.2/modules
Compilamos e instalamos PHP 5.2.13 (Verificar que no se produce ningún error durante la compilación e instalación)
cd /home/prueba/sources/php-5.2.13/
sudo ./configure --prefix=/usr/local/php/php_5.2.13 --with-apxs2=/usr/bin/apxs2 --with-mysql
sudo make
sudo make install
sudo cp php.ini-recommended /usr/local/php/php_5.2.13/lib/php.ini
sudo mkdir /usr/local/php/php_5.2.13/modules
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.2.13/modules
sudo ./configure --prefix=/usr/local/php/php_5.2.13 --with-apxs2=/usr/bin/apxs2 --with-mysql
sudo make
sudo make install
sudo cp php.ini-recommended /usr/local/php/php_5.2.13/lib/php.ini
sudo mkdir /usr/local/php/php_5.2.13/modules
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.2.13/modules
Compilamos e instalamos PHP 4.4.9 (Verificar que no se produce ningún error durante la compilación e instalación)
cd /home/prueba/sources/php-4.4.9/
sudo ./configure --prefix=/usr/local/php/php_4.4.9 --with-apxs2=/usr/bin/apxs2 --with-mysql
sudo make
sudo make install
sudo cp php.ini-recommended /usr/local/php/php_4.4.9/lib/php.ini
sudo mkdir /usr/local/php/php_4.4.9/modules
sudo mv /usr/lib/apache2/modules/libphp4.so /usr/local/php/php_4.4.9/modules
Creamos los archivos de configuración de cada versión. Es probable que las lineas que contienen LoadModule sea necesario correrlas de a una.
sudo touch /usr/local/php/php5.3.2.conf
sudo touch /usr/local/php/php4.4.9.conf
sudo touch /usr/local/php/php5.2.13.conf
sudo echo 'LoadModule php5_module /usr/local/php/php_5.3.2/modules/libphp5.so' | sudo tee /usr/local/php/php5.3.2.conf > /dev/null
sudo echo 'LoadModule php5_module /usr/local/php/php_5.2.13/modules/libphp5.so' | sudo tee /usr/local/php/php5.2.13.conf > /dev/null
sudo echo 'LoadModule php4_module /usr/local/php/php_4.4.9/modules/libphp4.so' | sudo tee /usr/local/php/php4.4.9.conf > /dev/null
sudo ln -s /usr/local/php/php5.3.2.conf /etc/apache2/php.conf
Para finalizar editamos el archivo /etc/apache2/httpd.conf eliminamos la lineas que contienen LoadModule php5 y LoadModule php4. Luego al final agregamos la siguiente linea
Include /etc/apache2/php.conf
Generamos el script con el que arrancaremos las distintas versiones para esto hacemos
sudo touch /bin/php.sh
sudo chmod 744 /bin/php.sh
Lo editamos y le agregamos el siguiente contenido
#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1 => PHP 4.4.9
2 => PHP 5.2.13
3 => PHP 5.3.2CABECERAMENU
echo -n "Ingrese su eleccion: "
read opcion
echo
case $opcion in
"1")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php4.4.9.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
"2")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php5.2.13.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
"3")
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
Cuando ejecutemos el comando
sudo /bin/php.sh
sudo /bin/php.sh
Veremos una pantalla como la que sigue.
Ingresamos el numero (1,2,3) del PHP que queremos usar y presionamos enter con lo que se reiniciara apache con la versión elegida.
Para verificar que funcione creamos una archivo info.php en /var/www con el sichiente contenido
<?php
phpinfo();
?>
Si navegamos la dirección http://127.0.0.1/info.php deberíamos ver algo asi

| Imprimir artículo | Este artículo fue publicado por admin el 14/04/2010 a las 19:59, y está archivado en How To, PHP. Sigue las respuestas a esta entrada a través de RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio. |


hace 3 meses
Viejo muchas gracias, de verdad que fue de gran ayuda.. xd