Mantengo un servidor AMP en mi ordenador; AMP significa (A)pache (M)ySQL (P)HP. La variedad más común es de hecho LAMP (L de Linux), donde un servidor con funcionalidad básica se levanta sólo con software gratuito y de código abierto. Sin embargo, nunca me he atrevido a instalar y usar Linux (todavía), así que lo hago en Windows. Sin embargo, me estoy alejando de la historia.
Después de instalar desde cero XP el mes pasado, decidí reinstalar el servidor AMP, en una carpeta llamada Cherokee como he estado haciendo los últimos años (lee Navegante Solar por David Brin). Instalé el último Apache HTTP Server 2.2.4, la última version 4.x de MySQL (ya que no quiero pasar a la 5.x todavía) y PHP 4.4.6 (lo mismo). Instalé y configuré todo, como he hecho bastantes veces más, y pensé que ya estaba todo hecho. Al día siguiente quise empezar la producción, así que arranco AMP… Y nada. No carga. Me encuentro con el temido error no se puede cargar en instalaciones PHP:
httpd.exe: Syntax error on line 188 of C:/Cherokee/Apache2/conf/httpd.conf:
Cannot load C:/Cherokee/php/sapi/php4apache2.dll into server: The specified module could not be found.
Este error es bastante común al configurar PHP con Apache 2.x; hay una dll php4ts.dll que debe estar en algún lugar del path. Algunos copian a la carpeta sapi, o copian la dll sapi a la carpeta principal de PHP, o lo dejan en una carpeta que esté en el path. Vale, yo hice TODAS esas opciones, pero el odiado error seguía apareciendo. Empecé a hacer toda clase de combinaciones, cambiando barras, moviendo dlls, añadiendo carpetas al path, pero nada. Busqué por internet sobre este error, y todo lo que pude encontrar fueron las mismas referencias a php4ts.dll. Me pase como dos horas con esto. Y me rendí, decidí que había algo erróneo en los programas. Creo que algunos de vosotros conocereis esa sensación: estar seguro de que lo que haces está bien echo, pero los putos programas no quieren funcionar.
Decidí cambiar versiones, probablemente volviendo de Apache 2.2.4 a 2.0.x (que fue la última que instalé hace un par de años). Pero antes de hacerlo, busqué incompatibilidades específicas entre 2.2.4 y 4.4.6. PHP.net - nada. Apache.org - niente. Google… Bueno, Google es una herramienta genial, pero tienes que saber cómo usarla. Una vez que me dí cuenta cómo hacer la búsqueda, vi que Apache 2.2.x y 2.0.x necesitan los módulos compilados de manera diferente. PHP viene con módulos compolados para Apache 1.x y 2.0.x, así que uno pensaría que de alguna maneral, los desarrolladores se darían cuenta de la necesidad de un módulo compilado para 2.2.x. La respuesta es sí y no. PHP 5.x viene con un módulo compilado para 2.2.x, pero 4.x NO. ¡Joder, que coño, mierdaputa! Hay un serio problema de compatibilidad, específicamente PHP 4.x no funciona bajo Apache 2.2.x, y no se menciona en NINGUNA PARTE. Si decidieron no dar soporte para 2.2.x para las versiones 4.x, para animar a la gente a actualizarse a 5.x, me parece bien, quizá o incluso probablemente yo habría hecho lo mismo. Pero avisad! No hay nada en los ficheros de instalación sobre esa incompatibilidad, y seguro que no vi nada en todo el sitio de PHP.
PHP es un software fantástico, construido con los esfuerzos de cientos de individuos a lo largo de los años, pero cosas como esta hacen que la gente mate gente. Al final, puedes hacer dos cosas: bajarte un binario no oficial del módulo PHP 4.4.6 php para Apache 2.2.x, y usarlo en vez del que viene con el paquete PHP, o bajar de versión de Apache a la 2.0.x, que debería ser suficiente para todos (de hecho, 1.3 es la versión más recomendada+estable+segura). Yo bajé la versión. Así que gracias, equipo PHP, por ese software tan maravilloso, pero permitidme que os odie un rato por algo realmente estúpido y tonto…
Y para terminar mi historia con un pequeño detalle, me pasé 15 minutos en el sitio de MySQL intentando encontrar una descarga que no incluyese la palabra comprar, hasta que me dí cuenta de que lo que quería era la edición Community. No hacen que destaque mucho…
Anuncio »« Diez toneladas de lino