martes, 1 de abril de 2014

Manjaro, Apache 2.4.7 y PHP

Ocurrió en la comarca que luego de hacer una actualización completa de Manjaro Linux me encontré con que el nuevo Apache 2.4.7 no levantaba con el típico comando:

systemctl start httpd

Y que su salida de estado me mostraba lo siguiente:

[root@zentraedy-l ~]# systemctl status -l httpd.service
httpd.service - Apache Web Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-04-01 01:12:34 ART; 5min ago
  Process: 2200 ExecStart=/usr/bin/apachectl start (code=exited, status=1/FAILURE)

Apr 01 01:12:34 zentraedy-l apachectl[2200]: httpd: Syntax error on line 59 of /etc/httpd/conf/httpd.conf: Cannot load modules/mod_authn_default.so into server: /etc/httpd/modules/mod_authn_default.so: cannot open shared object file: No such file or directory
Apr 01 01:12:34 zentraedy-l systemd[1]: httpd.service: control process exited, code=exited status=1
Apr 01 01:12:34 zentraedy-l systemd[1]: Failed to start Apache Web Server.
Apr 01 01:12:34 zentraedy-l systemd[1]: Unit httpd.service entered failed state.



Entonces, como buen tecnólogo, me puse a buscar dicho archivo, descubriendo que el mismo ya no estaba...

[root@zentraedy-l ~]# find / -name mod_authn* -print
/usr/lib/httpd/modules/mod_authn_core.so
/usr/lib/httpd/modules/mod_authn_anon.so
/usr/lib/httpd/modules/mod_authn_dbm.so
/usr/lib/httpd/modules/mod_authnz_ldap.so
/usr/lib/httpd/modules/mod_authn_file.so
/usr/lib/httpd/modules/mod_authn_socache.so
/usr/lib/httpd/modules/mod_authn_dbd.so


Muy para mi sorpresa, resulta que el proceso de actualización generó nuevos archivos httpd.conf y magic, llamados de la misma forma, pero con la extensión "pacnew".

La solución fue bien sencilla, sólo renombré los archivos httpd.conf a httpd.conf.original y magic a magic.original, para luego mover los archivos httpd.conf.pacnew a httpd.conf y magic.pacnew a magic.

Hasta acá, todo bien, cuando intenté levantar el web server lo hizo en forma satisfactoria.

Pero claro, nada puede ser tan sencillo, por lo que el módulo de PHP no parecía estar cargado...entonces debí volver a la carga y descubrí las bondades de ejecutarlo en modo standalone, ya que me liberé de tener que levantar todo el Apache para poder probar mis programas, en este caso para el puerto 8000:

php -S localhost:8000 -t /srv/http

Con eso, ya tuve mi PHP con los mismos módulos que alguna vez utilicé.