WordPress: Pantalla en blanco e internal zend error

17 enero, 2015

Tras hacer una migración he obtenido una bonita pantalla en blanco o pantalla de la muerda (white screen of death) que se reproducía de forma intermitente (ahora sí, ahora no). No es un problema nuevo en WordPress, ya me había ocurrido y se debía normalmente a que el límite de memoria se ha sobrepasado y la página peta sin decir nada más. Lo nuevo en esta ocasión es que no se trataba de un problema de memoria.

Si te pasa esto de que WordPress te deje una pantalla en blanco, lo primero que tienes que hacer es elevar el límite de memoria. Si esto no funciona ahora veremos otras técnicas. Vas al fichero wp-config.php y buscas una línea como esta:

define('WP_MEMORY_LIMIT', '64M');

y subes el límite de memoria (por ejemplo, ‘128M’, es algo exagerado pero así te aseguras de que el problema es ese.

Si funciona tienes dos opciones, dejarlo así o buscar el ajuste perfecto para que funcione con el mínimo de memoria necesaria. Si no funciona, entonces hay que buscar otra causa. Para ello, lo primero es activar el modo debug de WordPress añadiendo en el mismo fichero wp-config.php estas líneas (comprueba que no existan ya, si existen cambia sus valores):

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

De esta manera, en el subdirectorio wp-content se generará un fichero debug.log que mostrará los errores que se vayan produciendo. Recarga la página de WordPress (cualquier página de tu sitio web) hasta que se produzca un error de pantalla en blanco y revisa el log. En mi caso aparecía estas líneas:

[17-Jan-2015 14:55:13 UTC] PHP Fatal error:  Internal Zend error - Missing class information for  in /ruta/a/blog.com/wp-content/plugins/wp-super-cache/wp-cache-base.php on line 5

Esto indica clarísimamente que el error se produce por culpa de un conflicto entre el plugin wp-cache-base y la librería de PHP Zend. Ahora queda por averiguar la razón del fallo. Buscando en Google hay diversas posibles soluciones:

  1. Desactivar el módulo APC: una solución bastante radical ya que dicho módulo permite acelerar bastante la ejecución de WordPress. Pero sin duda es una opción. Utiliza para ello el comando:
    <code>pecl uninstall apc</code>
  2. Comentar el pedazo de PHP que da problemas: es una solución que no me gusta nada porque en cuanto se actualice el plugin wp-super-cache de nuevo volverá la pantalla en blanco.
  3. Añadir unas líneas a la configuración de APC: para mi la única solución positiva (visto aquí).

Para esta última opción solo tienes que editar el fichero /etc/php5/conf.d/apc.ini (o crearlo si no existe). Fíjate que esa es la ruta de instalación de dicho fichero en mi Linux Debian con PHP 5.4, en tu caso puede ser distinto. En ese fichero añades las líneas siguientes:

apc.filters = wp-cache-base
apc.include_once_override = 0

y listo, mágicamente verás como el pantallazo en blanco desaparece (básicamente lo que se ha hecho es decirle a APC que no actúe sobre el fichero wp-cache-base que es el que está dando problemas). Deja un rato los logs activados para comprobar que efectivamente el error se ha esfumado y luego quítalos para ahorrar espacio en disco duro y optimizar un poquito.

Dicho esto, el problema de la pantalla en blanco puede aparecer en otras ocasiones y bajo otras circunstancias. La mejor forma de averiguarlo es comprobando lo que dicen los logs e investigando a partir de ahí.

Be Sociable, Share!

Tags: , , ,
Posteado en Tecnologia | Comentarios (0)

Dejar un comentario