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.
Excelente, ni yo lo hubiera explicado mejor! 😛
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
Hola Daniel, puedes ponerlo dentro de la definición del VirtualHost.
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.
Hola Gracias por el manual una duda como puedo relizar esta configuracion en Windows