[25-Feb-2016 10:09:30 UTC] PHP Fatal error: Out of memory (allocated 24379392) (tried to allocate 3072 bytes) in /home/user/public_html/example.com/wp-content/plugins/wp-smushit/lib/class-wp-smush-admin.php on line 1111
Este problema de memoria suele conllevar el error 500 (Internal Server Error) o el de 503 Service Unavailable.
–> El error 500 suele deberse a un error de programación (un script o un archivo PHP que generan un loop..), a un error de permisos, a conexiones externas que no acaban de realizarse… Es más fácil que aparezca cuando nos quedamos sin recursos (CPU de nuestro server sobrecargada). También puede deberse a una línea errónea en el archivo .htaccess.
–> El error 503 quiere decir que nuestro servidor (o el espacio que tenemos reservado para nosotros en el hosting) está sobrecargado y hemos superado en alguna ocasión los recursos de servidor disponibles. Puede deberse a un pico de tráfico, a ataques recibidos que sobrecargan nuestro servidor …
En el archivo wp-config.php
Justo antes de la linea:
/* ¡Eso es todo, deja de editar! Feliz blogging */
Debemos añadir lo siguiente:
ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_logWP.txt');
#This will create an error_logWP.txt file in your site's root directory. Let's see what it includes.
Esto creará un archivo llamado error_logWP.txt con un contenido interesante acerca de los errores y avisos de los archivos PHP de nuestra instalación WordPress:
Este archivo llamado error_logWP-txt mostrará por ejemplo:
[22-Mar-2016 02:15:20 UTC] PHP Fatal error: Call to a member function get() on a non-object in /home/user/public_html/midirectorio/wp-includes/cache.php on line 123
[22-Mar-2016 11:04:59 UTC] PHP Fatal error: Out of memory (allocated 23068672) (tried to allocate 122880 bytes) in /home/user/public_html/example.com/wp-includes/media.php on line 3102
[22-Mar-2016 11:25:27 UTC] PHP Fatal error: Out of memory (allocated 34340864) (tried to allocate 30720 bytes) in /home/user/public_html/example.com/wp-content/plugins/user-role-editor/includes/class-user-role-editor.php on line 585
[01-Apr-2016 08:32:03 UTC] PHP Fatal error: Out of memory (allocated 17039360) (tried to allocate 49152 bytes) in /home/user/public_html/example.com/wp-content/plugins/kiwi-logo-carousel/kiwi_logo_carousel_admin.php on line 287
Otra forma de obtener información es activando el modo debug, lo haremos así:
Igualmente en el archivo wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Esto creará el archivo wp-content/debug.log, con un contenido parecido a este:
[01-Apr-2016 18:59:13 UTC] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/user/public_html/midirectorio/wp-includes/wp-db.php on line 1518
[01-Apr-2016 18:59:13 UTC] PHP Deprecated: Assigning the return value of new by reference is deprecated in /home/user/public_html/midirectorio/wp-content/plugins/db-cache-reloaded-fix/db-cache-reloaded.php on line 91
[01-Apr-2016 18:59:13 UTC] PHP Notice: Constant STYLESHEETPATH already defined in /home/user/public_html/midirectorio/wp-includes/default-constants.php on line 346
[01-Apr-2016 18:59:13 UTC] PHP Notice: ¡El llamado método constructor para WP_Widget es obsoleto desde la versión 4.3.0! Utiliza <pre>__construct() en su lugar. in /home/user/public_html/midirectorio/wp-includes/functions.php on line 3624
Los chicos de GenerateWP nos ofrecen una interesante herramienta que nos ayudará a generar algunas de las modificaciones en el wp-config que ya hemos comentado en este post: Generador de wp-config
El plugin Debug Bar Añade una opción “Debug” en la admin bar de WordPress:
Dependiendo de la cantidad de Warnings y Notices que recibamos, el botón Debug se mostrará rojo o naranja.
Al pulsar el botón Debug, nos mostrará las consultas a la base de datos, la caché, y la versión de PHP:
*** Este plugin exige activar las opciones mencionadas anteriormente para registrar todos los errores y notificaciones, así como las consultas a la base de datos, la cantidad de ellas y la latencia en milisegundos.
* Recuerda activar en tu wp-config.php:
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SAVEQUERIES', true);
La opción SAVEQUERIES la activaremos también porque con el siguiente plugin, que complementa a Debug Bar, es con el que podremos examinar las consultas a la base de datos:
El plugin Debug Bar Console añade una consola PHP y SQL a la barra creada por el plugin anterior: DEBUG bar
Si activamos SAVEQUERIES, añadiendo en wp-config.php lo siguiente:
define( 'SAVEQUERIES', true );
añadirá además el seguimiento de las consultas SQL y las mostrará por pantalla:
El plugin Wp Log Viewer nos permite controlar la activación de debug desde el panel de WordPress.
Para ello debemos añadir algunas lineas en el wp-config, y crear un archivo de configuración para este plugin:
Hemos de crear el archivo wplv-config.php en el directorio raiz.
y en dicho archivo añadir lo siguiente:
<?php if (!defined('ABSPATH')) { header('HTTP/1.0 403 Forbidden'); die; } define('WPLV_DEBUG', false);
En nuestro wp-config debemos añadir lo siguiente para incluir el archivo wplv-config.php:
include_once $_SERVER['DOCUMENT_ROOT'] . '/wplv-config.php';
El último paso es definir el estado de WP_DEBUG. Si ya lo habíamos definido previamente, lo que haremos es reemplazar el texto con el siguiente:
define('WP_DEBUG', defined('WPLV_DEBUG') ? WPLV_DEBUG : false);
WP Log Viewer en funcionamiento:
Existen otros plugins que se complementan con Debug Bar y nos permiten visualizar las tareas Cron instaladas en nuestro WordPress. Es interesante comprobar la carga de las tareas CRON en nuestro servidor, y modificar o eliminar las que sea necesario. Lo veremos en la próxima entrada.
Activando los plugins Debug Bar y Debug Bar Console, y activando las opciones WP_DEBUG, SAVEQUERIES, WP_DEBUG_LOG y WP_DEBUG_DISPLAY en wp-config.php, podremos depurar la carga de plugins, temas, scripts y otros archivos en un sitio web. Podremos examinar la memoria consumida y eliminar los plugins lentos o pesados que ralenticen o sobrecarguen la CPU de nuestro hosting.
Más info sobre Depuración de errores en WordPress.org