lunes, 1 de septiembre de 2008

PHP5: This module does not exist!

La instalación de apache2 y php5 usualmente es un proceso sumamente sencillo en Debian Etch:
  • aptitude install apache2 php5
Sin embargo, cuando por alguna razón se trata de desinstalar el programa "manualmente" inventando cosas como borrar directorios de configuración las cosas se pueden volver complicadas para poner a funcionar nuevamente el módulo de php5.

En este ejemplo se explica cómo resolver la situación en la que luego de hacer los pasos "obvios" descritos anteriormente, Apache2 no es capaz de ejecutar páginas PHP y los exploradores al momento de acceder a la página intentan identifican el archivo publicado con "PHTML" y tratan de descargarlo en vez de mostrar la información correspondiente.

Pude observar que al momento de tratar de cargar el módulo "php5", sus archivos relacionados no existían en el directorio "/etc/apache2/mods-available" y el mensaje que me mostraba el shell cuando intentaba cargarlo era el siguiente:
  • a2enmod php5
  • This module does not exist!
Pude constatar que las librerías relacionadas con el módulo estaban en el sistema operativo:
  • updatedb
  • locate libphp5.so
  • /usr/lib/apache2/modules/libphp5.so
Entonces en teoría, lo que faltaban eran los archivos de configuración del módulo en el directorio "/etc/apache2/mods-available" por lo que procedí a crearlos:
  • vim /etc/apache2/mods-available/php5.load
    • Agregué esta línea:
    • LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
  • vim /etc/apache2/mods-enabled/php5.conf
    • Agregué estas líneas:
    • AddType application/x-http-php .php .phtml .php3
    • AddType application/x-http-php-source .phps
Ahora si intentamos cargar el módulo de PHP5:
  • a2enmod php5
  • Module php5 installed; run /etc/init.d/apache2 force-reload to enable.
  • /etc/init.d/apache2 force-reload
En este momento podemos probar cualquier página PHP y si todo sale bien se visualizará correctamente el contenido.

Éxitos!