Cómo desactivar un directorio concreto en eaccelerator (Horde-Webmail)

Poco a poco, tras haber hecho la última entrega del máster de Seguridad el pasado lunes (me falta únicamente el proyecto para terminarlo), estoy volviendo a la vida normal. Y vida normal es hacer como hice ayer: salir de trabajar, y poder tocar 1 hora larga la trompeta, darme un paseo de 1hora y media por Pamplona, cenar tranquilo, ver el partido de España y meterme a dormir.

Hoy me he sacado una espinita que tenía clavada desde hace un tiempo. Como bien sabéis tengo un servidor VPS, contratado con SingularWeb, y de momento estoy muy contento con ellos, salvo porque al servidor le faltaba una puesta a punto seria, en temas de optimización. Y como he andado tan liado pues no me era posible meterle mano. Pero bueno vamos al tema del eaccelerator que me voy por las ramas.

Hace un mes instalé eaccelerator, un módulo para apache que lo que hace es cachear los archivos php precompilados, para de esta forma cada vez que se piden se entregan ya precompilados, y la entrega es por tanto muchísimo más rápida. Esto nos permite mejorar los tiempos de respuesta de nuestras páginas web. Este módulo se puede descargar y compilar, siguiendo las instrucciones que proporciona (configure, make, makeinstall), para nuestro PHP. Y después hay que configurar el php.ini para este módulo. Aquí os pongo mi configuración:

;; Configuracion eaccelerator
extension="eaccelerator.so"
;eaccelerator.shm_size="16"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/var/www/vhosts/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.filter = "!*/usr/share/* !*Horde/IMAP/Tree.php"

Estas líneas nos permiten configurar el módulo indicando parámetros como el tamaño de shm, el directorio de la cache, el nivel de compresión…. Y lo importante de este artículo, lo que me ha hecho romperme la cabeza es la última línea que dice:

eaccelerator.filter = "!*/usr/share/* !*Horde/IMAP/Tree.php"

Esto permite que no cache los ficheros aquí indicados. ¿Y por qué no cacheo el Tree.php de Horde? Porque si no ponemos esta línea el Horde (Webmail), no funciona con eaccelerator, mostrando una pantalla en blanco, y poniendo en el log de apache/php lo siguiente:

[Fri Jun 04 07:29:34 2010] [error] [client XXX:XXX:XXX:XXX] PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (psa-horde:psa/webmail/horde:/etc/
psa:/tmp:/var/tmp:/var/log/psa-horde) in Unknown on line 0
[Fri Jun 04 07:29:34 2010] [error] [client XXX:XXX:XXX:XXX] PHP Fatal error: Can't load psa-horde/index.php, open_basedir restriction. in Unknown on line 0
[Fri Jun 04 07:29:36 2010] [error] [client XXX:XXX:XXX:XXX] PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (psa-horde:psa/webmail/horde:/etc/
psa:/tmp:/var/tmp:/var/log/psa-horde:psa-pear) in Unknown on line 0
[Fri Jun 04 07:29:36 2010] [error] [client XXX:XXX:XXX:XXX] PHP Fatal error: Can't load psa-horde/index.php, open_basedir restriction. in Unknown on line 0

Pues nada, espero que os sirva este artículo que nos indica cómo configurar eaccelerator con Horde (Webmail), y cómo desactivar un directorio en concreto para que no lo cachee eaccelerator.

Leave a Reply