Instalar varias versiones de PHP en un mismo Apache

Aunque PHP5 está cada vez más extendido aún sigue siendo frecuente encontrarse con aplicaciones hechas en PHP4. Hay diferentes formas de hacer que estas aplicaciones funcionen en un servidor que tenga ya instalado PHP5, en este post explico una forma de hacerlo en un servidor Ubuntu utilizando una misma instalación de Apache y ejecutando PHP4 como CGI, aunque podríamos serviría para instalar cualquier otra versión de PHP.

Partiendo de una instalación previa de Apache y PHP5, lo primero que hay que hacer es instar con apt-get los paquetes que necesitamos para compilar la versión de PHP4 que queremos instalar, ya que no está en los repositorios.

sudo apt-get install bison flex libmysqlclient16-dev libzzip-dev libcurl3-dev libmcrypt-dev libmhash-dev libjpeg8-dev libpng-dev

El siguiente paso consiste en obtener los fuentes de la versión de PHP, compilarla e instalarla, utilizando las herramientas habituales en Linux.

cd /usr/local/src
sudo wget http://es.php.net/distributions/php-4.4.9.tar.gz
sudo tar -xvzf php-4.4.9.tar.gz
cd php-4.4.9
./configure --prefix=/usr/local/php4 --enable-force-cgi-redirect --enable-fastcgi --with-config-file-path=/usr/local/etc/php4/cgi --with-curl --with-curl-dir=/usr/local/lib --with-gettext --with-kerberos --with-mcrypt --with-mhash --with-mysql=/usr --with-pear --with-xml --with-zlib --with-zlib-dir=/usr/include --with-zip --enable-bcmath --enable-calendar --enable-ftp --enable-magic-quotes --enable-sockets --enable-track-vars --enable-mbstring --enable-memory-limit --with-gd --with-jpeg-dir=/usr/lib --with-png --with-iconv
sudo make
sudo make install

En el caso de que tengamos problemas de configuración con lib-png-dev podemos quitar de la línea ./configure las instrucciones --with-gd --with-jpeg-dir=/usr/lib --with-png si no vamos a necesitar soporte para GD.

Tras compilar e instalar los binarios hay que crear el archivo de configuración para su ejecución como CGI y activar el módulo de apache que permitirá ejecutar los scripts de PHP4 como CGI en base a su extensión.

sudo mkdir -p /usr/local/etc/php4/cgi
sudo cp php.ini-dist /usr/local/etc/php4/cgi/php.ini
sudo a2enmod actions

Tenemos también que modificar la configuración actual del módulo PHP5 de apache para que no se encargue por defecto de procesar todos los archivos de PHP. Para ello quitaremos del archivo /etc/apache2/mods_available/php5.conf la siguiente línea:

SetHandler application/x-httpd-php

Por último, en los dominios en los que queramos disponer de PHP4 añadiremos lo siguiente:

ScriptAlias /cgi-bin /usr/local/php4/bin   
AddHandler application/x-httpd-php4 .php .php4 .php3
Action application/x-httpd-php4 /cgi-bin/php
<Directory "/cgi-bin/php">
   Order allow,deny
   Allow from all
</Directory>

Ya solo queda reiniciar Apache y listo.

sudo /etc/init.d/apache2 restart

Gracias a David (Galleta), compañero de aventuras en Kukers, por estas instrucciones.

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

6 Respuestas para “Instalar varias versiones de PHP en un mismo Apache”

  1. Excelente, ni yo lo hubiera explicado mejor! 😛

  2. Hola. Muy bien explicado todo y muy util, sólo me resta una pregunta, en la parte donde dices: “Por último, en los dominios en los que queramos disponer de PHP4 añadiremos lo siguiente:” ¿Exactamente en que parte hay que añadir estas líneas? ¿en que archivo?
    Muchas gracias por todo

  3. Patxi Echarte 24. Ene, 2012 en 9:31 pm

    Hola Daniel, puedes ponerlo dentro de la definición del VirtualHost.

  4. Gracias por tu publicacion, en la web he encontrado otra forma a traver que crear una script, pero lo que yo necesito es que automaticamente utilice la version de php especificado en el virtualhost.

    Consulta, yo tengo instalado php 5.3.2 si quiero instalar la version 5.2.9, en la parte que indicas… y ejecutando PHP4 como CGI, que tendria que varias para que instale la 5.2.9 No como CGI, sino la normal o asi como CGI sevantaria normal la pagina, la misma que esta echa en joomla.
    Desde ya las gracias.

  5. Carlos Moreno 10. Jun, 2013 en 8:53 pm

    Hola Gracias por el manual una duda como puedo relizar esta configuracion en Windows

Trackbacks/Pingbacks

  1. Dos versiones de PHP en el mismo servidor Web | 3W Soluciones Web - Blog - 17. May, 2013

    […] cómo realizar esta operación si bien en este caso vamos a hacer referencia a: Eslomas. Es un manual en español que está perfectamente explicado cómo se puede […]