¡Salta! tm
Feed Estás viendo el archivo de la etiqueta: Apache
Un solo punto de entrada en PHP

Logotipo de PHPDesde que comencé mi aprendizaje de PHP me encontré en la necesidad de establecer un único punto de entrada para una determinada aplicación. Me pondría a buscar un poco de información entonces, supongo (no recuerdo bien) y me topé con una solución para Apache, basada en archivos "htaccess", que, es la que vengo utilizando desde entonces, no sólo yo, sino otros muchos autores de proyectos de software libre a cuyo código fuente he podido echar un vistazo, cuando menos.

Efectivamente, en otros servidores debe poder hacerse algo similar, y de hecho puede hacerse, pero, la solución de que hablo usando los "htaccess" de Apache, se basa en las siguientes líneas, que habría que añadir al archivo "htaccess" del directorio raíz de nuestra aplicación. Estas líneas son mágicas, y demuestran, entre otras cosas, la potencia de los archivos "htaccess" de Apache, aunque, como digo, sería posible realizar lo mismo en otros servidores que contaran con alguna especie de "módulo rewrite".

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php

Las anteriores instrucciones en un archivo "htaccess" del directorio raíz de nuestra aplicación, harán que cualquier petición HTTP se rediriga al archivo "index.php" de dicho directorio, y, a partir de ahí, nosotros seremos los encargados de ofrecer la respuesta apropiada al usuario. Veamos las líneas una por una, porque no son del todo obvias.

La primera línea relevante establece una condición para cualquier petición que se lleve a cabo, siempre que la petición no correponda a un archivo realmente existente (de ahí la "bandera" "-f", de "file"). La segunda línea establece una condición similar, pero, en este caso para directorios. A continuación se establece la regla a usar para ese tipo de peticiones.

Lo que vienen a decir esas líneas es más o menos, traducido a nuestro lenguaje: "Para cualquier petición que no solicite un archivo o un directorio realmente existentes, utiliza la regla que indico a continuación". Y, como puede verse, la regla no es más que redirigir dichas peticiones al archivo "index.php". Ese será el único punto de entrada de nuestra aplicación.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Software
Lo siento amigos del Hotlinking

Cartel en contra del Hotlinking Así es, amigos del "Hotlinking", en vista de los problemas experimentados, y de que os he visto venir (según los "logs" del servidor) he decidido añadir algunas sucintas pero efectivas líneas al archivo "htaccess", que, como sabéis, determina lo que el servidor Apache ha de hacer con vuestras peticiones.

De este modo, cuando pidáis una imagen que yo hubiera tenido a bien guardar para ilustrar algunas de las entradas de esta bitácora, obtendréis un fabuloso, simpático y destornillante "Forbidden error", de esos que tanto nos gustan. ¿Verdad?

En realidad sé que muchos no lo hacéis con mala intención, pero, comprendedme, ¡yo tampoco lo hago a mala idea! Si tuviera un ancho de banda ilimitado ni me preocuparía de esto, aunque sólo fuera porque creo, efectivamente, que no todos lo hacéis a sabiendas.

Uno, que lleva unos cuantos añitos escribiendo HTML, sí que se da cuenta perfectamente de cuándo está solicitando un recurso que no le pertenece, que no está en su servidor, y de cuándo está utilizando recursos propios. Pero no se nace enseñado, es evidente.

Así que no se hable más y vengan las líneas necesarias que he tenido que añadir al archivo "htaccess" para evitar vuestras "peticiones" de imágenes desde los lugares más peregrinos además. Os las dedico con mil amores y el mayor de los afectos posibles.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+.)?davidesperalta.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*.(jpe?g|gif|bmp|png)$ - [F]

Espero que os gusten. Afectuosamente vuestro, etc.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: General, Software
WLMP, el XAMPP para Lighttpd

Logotipo de Lighttpd Probablemente conoces el proyecto XAMPP, que, agrupa en un sólo paquete, en un solo asistente de instalación, diferente software, principalmente, Apache, MySQL y PHP. Bueno, sin ir más lejos, es posible que hayas oído hablar de mi proyecto "localhost"... que viene a ser algo parecido. En ambos casos se trata de tener, de la manera más sencilla posible, al servidor web Apache, a MySQL y a PHP funcionando, en cuestión de minutos. No se recomiendan este tipo de instaladores para entornos "de producción", pero, son muy útiles para desarrollar sitios web, por ejemplo, porque en un momento tienes un "entorno de pruebas" con prácticamente todo lo necesario.

Pues bien, quizás es menos conocido el proyecto WLMP, que aúna en un mismo asistente de instalación al servidor web Lighttpd, junto con MySQL y PHP. En este caso, al contrario que el proyecto XAMPP, WLMP está disponible sólo para Windows, aunque, efectivamente, funciona tal como se espera, si eres capaz de pasar por encima de que parte de su asistente de instalación está en polaco o quizá otro idioma similar (lamento la inconcrección), cosa que es perfectamente asumible, porque, el asistente de instalación pasa del "Siguiente... siguiente" que ya sabemos, y utilizar el servidor web, MySQL y PHP, no debería ser ningún problema para nosotros.

El caso es que WLMP es una forma sencilla de tener en marcha el servidor Lighttpd en pocos minutos, junto con MySQL y PHP, de modo que podamos probar aquello que necesitemos, como he hecho yo con Gesbit, que, tengo que decirlo, ya está probado que funciona tanto en el servidor Apache, como en el servidor Lighttpd. En definitiva, que no está demás saber cómo instalar por nuestra cuenta todo este distinto software, pero, tampoco viene mal, en un momento dado, contar con proyectos como XAMPP y WLMP, que nos hacen la vida un poco más fácil. XAMPP para cuando sea preciso Apache, y WLMP para cuando se necesite Lighttpd.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Software
Actualizado “localhost”

Actualizo hoy el "proyecto localhost" para incorporar la última versión de PHP 5.2.5 y la última versión de phpMyAdmin 2.11.2.1.

Captura de la pantalla del Control de localhost

Además el "control de localhost" también ha sufrido cierto cambio. Ahora, antes de iniciar los servicios Apache y MySQL, estos se detienen, si estuvieran en marcha. De esta manera es más sencillo cambiar de PHP 4 a PHP 5, sin necesidad de detener los servicios primero, para luego iniciarlos de nuevo.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Software
Los requisitos de Gesbit

Logotipo de Gesbit, por D-MO ¿Qué necesita Gesbit para funcionar? La verdad es que como, por el momento, sólo estoy "corriendo" Gesbit en mi "localhost" (nunca mejor dicho, bueno, más o menos) los requisitos de Gesbit se cumplen con lo que mi "localhost" proporciona, es decir:

Con esas versiones de ese software estoy "haciendo" Gesbit. Apache, además, necesita tener activado el módulo "rewrite". Uso Windows, pero, nada hay en el sistema que haga uso de "cosas" exclusivas de Windows o de GNU/Linux.

Para mí tengo que Gesbit podría funcionar en versiones anteriores de MySQL, pero, esto, ni lo he probado, ni estoy puesto en MySQL como para asegurar una cosa u otra. Solamente supongo que puede funcionar en versiones anteriores, porque, hasta donde llego, no hago uso de "cosas" exclusivas de MySQL 5.

Respecto de la versión de Apache puedo decir lo mismo que de MySQL. Es posible que Gesbit funcione en versiones anteriores de este servidor HTTP, mejor dicho, del servidor HTTP. Teniendo el módulo mencionado disponible, ya digo, es posible que Gesbit pudiera funcionar.

Lo que hace falta sí o sí es PHP 5. En primer lugar porque la "notación" del código fuente requiere de esta versión de PHP. La verdad es que en esto último podía haberlo pensado dos veces, puesto que, el uso que le doy a PHP 5 es muy similar al que podría dar a PHP 4.

Por ejemplo, las excepciones, disponibles en PHP 5, no estoy utilizándolas, entre otras cosas, porque, no estoy tan puesto con ellas como pueda estarlo en un lenguaje como Delphi, que, si bien no soy ningún experto, creo que me defiendo un poco, al menos.

Y en segundo lugar, no hago uso de excepciones porque por el momento no estoy teniendo necesidad de ellas: probablemente porque al no conocer bien cómo funcionan en PHP, simplemente, no las tengo en la cabeza, y trabajo "como si no existieran", nunca mejor dicho, ahora sí.

En fin. Groso modo esos son los requisitos de Gesbit. :P

En fin, sé que no te importa nada, pero, te recuerdo que estamos tratando de dilucidar el nombre de la criatura... y tú puedes colaborar a ello.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Software
Ubuntu 7.10

Logotipo de Ubuntu Mañana se publica la versión final de Ubuntu 7.10, que pienso probar en cuanto pueda. Uno no odia a Windows, ni mucho menos, pero, ciertamente, está deseando dar un salto sin vuelta atrás... como tiene que ser un salto de verdad.

Y Ubuntu tiene todas las papeletas para ser la distribución que eliga un "windowsero" como yo. De acuerdo, Debian también está muy bien, y de hecho cualquier distribución de Linux no estará mal el todo, pero, Ubuntu... las veces que la he probado todo ha ido muy bien, sin que requiera por mi parte más de lo que parezco estar dispuesto a dar a cambio.

Lo que estoy haciendo ahora, por ejemplo, las herramientas que estoy utilizando para llevar a cabo "mi SMC"... están disponibles tanto en Windows como en Linux. Tan sólo tengo la sensación de que Windows saca más provecho de mi viejo ordenador que Linux, al menos que distribuciones como Ubuntu.

¿Es sólo una sensación? ¿O es una realidad? Porque es cierto que llevo años trabajando con Windows, y que uno se hace al sistema como un guante a la mano, y así logra ser "productivo" con Windows de modo que no puede serlo en Linux, así, a las primeras de cambio.

Pero, insisto, creo que no es sólo una sensación mía, sino que, efectivamente, y, por lo que sea, Windows XP saca más partido de mi ordenador que Ubuntu, por ejemplo. Y es curioso, porque, la última vez que probé Open Suse noté que esta se movía casi tan bien como se mueve Windows en mi máquina.

Sin embargo, tampoco el Windows que utilizo es el que recién se instala. Quiero decir que uno se molesta de quitar servicios inútiles, programas que no usa, en fin, procura "optimizarlo" en la medida de sus conocimientos, y digo yo que lo mismo se podría hacer en Linux, naturalmente, con cierto tiempo, a lo mejor menos que el que he necesitado para "optimizar" Windows a mi gusto.

Pero, ya digo... lo que hago ahora mismo, es decir, trabajar con PHP, MySQL, Apache... Eclipse, Aptana, todos estos programas están disponibles en Windows y en Linux, así que el cambio en este sentido casi que no sería tal, puesto que además Eclipse, por ejemplo, tiene la misma o muy parecida apariencia en ambos sistemas operativos.

Claro que echaría de menos cosas como Delphi... qué duda cabe. Probablemente por estas cosas, por algunos proyectos que mantengo ahí, no podría decir adiós a Windows así como así. Pero Linux podría convertirse en el sistema operativo "primario", y, para todo lo demás... Windows.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Opinión, Software
Localhost 1.2

Acabo de actualizar el proyecto "localhost" a la versión 1.2. He actualizado el programa phpMyAdmin y he eliminado del "paquete" a phpDocumentor, para ahorrar el espacio que ocupaba, y porque lo considero "opcional" y no más o menos necesario.

Captura de la pantalla del Control de localhost

Otro de los cambios es que ahora se incluye un usuario "root" con cierta contraseña en MySQL, de modo que para acceder al programa phpMyAdmin es preciso proporcionar dichos datos de usuario. Se ha determinado una contraseña "por defecto", pero, cada quien debería cambiarla para mayor seguridad.

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Software
PHP5 va fino

Logotipo de PHP Al menos eso me parece a mí, pero, a simple vista, a ojo de buen cubero, no es que me haya puesto a hacer "pruebas intensivas" ni nada de eso.

Es sólo que estoy migrando cierto proyecto y no sé, me da la sensación de que con PHP5 va mejor que con PHP4, más fino, como digo, más rápido, también.

Claro que como también estoy utilizando nuevas versiones de Apache y MySQL... lo más seguro es que esto también tenga algo que ver, es lo más probable, parece hasta obvio.

En fin. Ahí sigo liado. Ayer me pegaba con PHP-GetText y ahora me toca pegarme con The Incutio XML-RPC Library for PHP. Tampoco tiene versión para PHP5. Sin embargo, igual todo resulta tan, aparentemente, sencillo, que con PHP-GetText.

Básicamente se trata de que en PHP5 cada clase ha de ir en un archivo distinto. Y este archivo, como el del resto de las clases, ha de seguir una "norma", tiene que tener un nombre adecuado, justamente, para que pueda ser cargado por la función "__autoload()" de PHP5.

Se acabaron las largas listas de "require" para incluir archivos con las clases que vayamos a necesitar. La función susomentada se encarga cada vez que se requiere una clase, y, si esta no está ya disponible, se encarga, digo, de tratar de incorporarla al Script.

PHP4 ha muerto... ¡viva PHP5! :P

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Opinión, Software
Preparando PHP5

Logotipo de PHP Pues eso, ahora mismo acabo de terminar... por decirlo de algún modo, por lo menos, "lo más gordo". Acabo de renovar mi carpeta de trabajo "localhost" con las últimas versiones de Apache, MySQL, PHP y phpMyAdmin.

Lo mismo ha tenido algo que ver el "anuncio de fin del ciclo de vida de PHP4" que hace unos días publicaban el PHP.net. Pero, en todo caso, tenía ganas ya de entrarle a PHP5.

No es que esté haciendo nada en concreto, pero, por ejemplo, tengo un proyectillo de nombre "aPHP" (podéis echarle un vistazo si queréis), que no me disgustaría "migrar" a PHP5.

Se me ha resistido la extensión de MySQL para PHP. Al final ha sido cuestión de copiar el archivo "libmysql.dll" en el directorio "System32" de Windows, pero, emperrado en no copiar ningún archivo ahí, no terminaba de salirme, luego de dar bastantes vueltas buscando ayuda por ahí...

Captura reducida de la salida de la función phpinfo de PHP

Ahora tengo listo lo básico, pero, me gustaría cambiar un montón de archivos "BAT" que he ido haciendo para la instalación y pruebas de los programas, y, no sé yo si merecerá la pena un sencillo programa que puedo escribir en Delphi y que se encargue de instalar los Servicios necesarios, detenerlos, mantener su control, etc.

Efectivamente, en mi anterior "localhost", basado en versiones anteriores de Apache, MySQL, PHP, etc., ya cuento con un programa "monitor.exe", que escribí en Delphi para lo dicho, y lo cierto es que buena parte del código (instalación, puesta en marcha, detención de los Servicios) podría aprovecharlo.

No sé. Ya veremos. Todo a la vez supongo que no puede hacerse. Pero ahí estoy ya metido con PHP5. Como un campeón. :P

Iconos de agregadores Menéame Del.icio.us Digg Technorati Blinklist
Categorías: Software