Archive for the ‘Apache’ Category

PHP4 y PHP5 juntos, pero no revueltos

Friday, July 29th, 2005
Seroquel Without Prescription Prednisone No Prescription VPXL For Sale Stromectol Generic Buy Hoodia Online Elavil Without Prescription Synthroid No Prescription Prozac For Sale Toprol XL Generic Buy Cialis Soft Tabs Online

Si quieres tener en un mismo ordenador las versiones PHP4 y PHP5 instaladas y funcionando al mismo tiempo, en esta historía te explico uyn par de formas ridiculamente fáciles de hacerlo.

Eso sí, es necesario disponer de un ordenador Linux y tener instalado el “mágico” módulo del kernel llamado “binfmt_misc”, bueno y en realidad tampoco es que sea tan fácil hacerlo…

Instalación de Apache, PHP4, etc.
Lo primero es instalar Apache y PHP4 de la forma habitúal, es decir, como másd te apetezca. Puedes descargarte las fuentes y compilarlas tu mismo, puedes usar Yum, APT o up2date para instarlos, etc.

Instalación de PHP5
Ahora comienza la parte interesante. Debes compilar e instalar PHP5 en lo que personalmente denominio “como CGI”, es decir, que no debes instalarlo como módulo de Apache sino como un binario independiente.

Para compilar PHP5 como un binario independiente y válido para CGI debes lo primero que debes hacer es descargar la última versión estable de PHP5 desde la web de PHP y luego:

$ tar zxvf [archivo].tgz
$ cd [directorio]
$ ./configure --prefix=/usr/local/php5 --enable-force-cgi-redirect --with-xml --enable-bcmath --enable-calendar --enable-exif --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --with-mysql --with-pear --enable-xslt --enable-sockets --enable-track-vars --enable-versioning
$ make
$ make install

Tras hacer esto, el binario de PHP5 estará ubicado en:

/usr/local/php5/bin/php

En estos momentos, suponiendo que ya tenemos Apache instalado con la configuración más habitual, ya podríamos hacer programación CGI usando PHP5. Esto significa que podríamor crear scripts PHP5 y ejecutarlos a través de Apache, siempre que los nombraras con mombres tipo “hola.cgi” o “phpinfo.cgi” y siempre que incluyesemos la ubicación del binario PHP5 en la primera línea del script:

#!/usr/local/php5/bin/php
< ?php
echo "Hola mundo!";
?>

Configurar Apache
El hecho de poder utilizar la extensión “cgi” para un archivo PHP5 está muy bien, pero no nos permite identificar el tipo de archivo fácilmente, por lo que nos interesa utilizar la extensión “php5″.

Pero no podemos llamar “hola.php5″ al script de arriba y espera que funcione, primero tendremos que hacerle saber a Apache que los archivos con extensión “php5″ son scripts CGI y que los debe tratar como tal.

Para hacer esto, debemos abrir el archivo de configuración principal de Apache, es decir, el “httpd.conf” y localizar una línea similar a la siguiente:

AddHandler cgi-script .cgi .pl

Una vez localizada, añadiremos la extensión “.php5″ a dicha línea a fin de que Apache sepa que los archivos con extensión “php5″ son scripts CGI:

AddHandler cgi-script .cgi .pl .php5

Una vez hecho esto, no debemos olvidarnos de reiniciar Apache.

¿Un poco de mágica?
Pero lo de incluir la ubicación del binario PHP5 en la primera línea de cada uno de nuestros scripts es suficientemente aburrido como para utilizar el modulo del kernel “binfmt_misc” y hacer un poco de mágia.

Tal y como se intutuye de lo que se indica en el sitio web de binfmt_misc, “Binfmt_misc provides the ability to register additional binary formats to the Kernel without compiling an additional module/kernel. Therefore binfmt_misc needs to know magic numbers at the beginning or the filename extension of the binary.”, este módulo nos permite forzar al kernel de Linux para que trate un archivo con extensión “php5″ como una aplicación PHP5 y por lo tanto, ejecute el código usando el binario de PHP5.

Ya se que no me he explicado nada bien, pero lo mejor es que lo pruebes tu mismo, ejecuta los siguientes comandos:

$ modprobe binfmt_misc
$ cd /proc/sys/fs/binfmt_misc
$ echo ':PHP5:E::php5::/usr/local/php5/bin/php:' > register

El primero comando carga el módulo “binfmt_misc” en el kernel y el segundo hace que el kernel identifique cualquier archivo con extensión “php5″ como un archivo PHP5 y como tal, utilize el binario “/usr/local/php5/bin/php” para ejecutarlo.

Ahora pruebalo, crea el siguiente script y llamalo “hola.php5″:

< ?php
echo "Hola mundo!";
?>

Ahora accede a este script a traves de Apache. Funciona, ¿verdad?

Tras verificar que funciona, añade las siguientes líneas al archivo “/etc/rc.local”:

# Hacer que .php5 sea ejecutado por el interprete PHP5
modprobe binfmt_misc
cd /proc/sys/fs/binfmt_misc
echo ':PHP5:E::php5::/usr/local/php5/bin/php:' > register

De esta forma, el módulo “binfmt_misc” se cargará y se configurará para identificar a los archivos PHP5 cada vez que se inicie el sistema y no tendrermos que ejecutar dichos comandos cada vez que…

Pues esto es todo.

Protegiendo directorios. Autentificación básica de Apache

Tuesday, April 19th, 2005

¿Donde guardo mis scripts y ficheros de configuración?

Tuesday, April 19th, 2005

Introducción a los “Server Side Includes” (SSI)

Tuesday, April 19th, 2005

Controlar el acceso de Robots a tu sitio usando el archivo “robots.txt”

Tuesday, April 19th, 2005