Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

Elementor Pro :: Problemas de memoria

No es la primera vez que me encuentro con el agotamiento de la memoria en sitios de WordPress, y a menudo la información disponible es la misma. Incluso me lleva a recordar ese grupo de «expertos» que repiten el mismo consejo una y otra vez sin aportar nada nuevo a la conversación. Incluso las IA, como ChatGPT, también caen en la misma trampa.

Ninguna IA parece darse cuenta de que en el mundo de la programación hay personas que no siguen las mejores prácticas, y que el software, como WordPress, se nutre de miles de programadores que no respetan las normas de codificación, algo que ni siquiera WordPress impone, lo que abre la puerta a todo tipo de problemas.

Lo habitual  para soluciona el problema de Memory Exhausted en WordPress

Ya conocemos las soluciones típicas:

– Editar `PHP.INI` o `.htaccess` para aumentar el valor de `memory_limit`.
– Modificar las constantes de WordPress llamadas `WP_MAX_MEMORY_LIMIT` y `WP_MEMORY_LIMIT`, que se pueden utilizar en el archivo `wp-config.php`.

Pero claro, esto ya lo sabías. A menudo llegamos al punto de enfrentarnos a este problema porque estamos desesperados, ya sea porque nuestro proveedor de hosting nos dice que no es su problema, dado que ya tenemos asignados hasta 512MB de `max_memory`, o porque alguien nos sugiere desactivar los plugins en lugar de preguntarnos sobre la depuración para identificar la línea de código que causó el error.

## Mi consejo

En primer lugar, activa la depuración en tu WordPress. Puedes encontrar información sobre cómo hacerlo en [Depurar en WordPress](https://codex.wordpress.org/es:Depurar_en_WordPress). Aquí encontrarás valiosa información, incluido el nombre del plugin o tema que está causando el problema debido a su programación deficiente.

Por ejemplo con Elementor Pro. Tras los cambios el sitio quedaba en la obscuridad del error.

 

Primero fue ponerlo en modo debug. (Tambien podemos verlo en el log de errores de PHP en el servidor, entrando via ssh)

Con esto, vemos el error:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 36864 bytes) in /home/usuario/public_html/wp-content/plugins/elementor/includes/base/controls-stack.php on line 665

Pero cuando vemos el código, obervamso que eso simplemnet ha sido el punto de ruptura.

Como vemos que el número de bytes es el corrspondiente a 256M vamos abuscar en nuestro wordpress ese número especial.

public_html > find . -type f -exec grep -l 256M {} \;

En uno de los ficheros ./wp-content/plugins/elegant-addons-for-elementor/elegant-addons-for-elementor.php  encontraremos el tema.


./wp-content/plugins/elegant-addons-for-elementor/elegant-addons-for-elementor.php

Author URI: https://crafthemes.com
Text Domain: elegant-addons-for-elementor
License: GNU General Public License v3.0
*/

if ( ! defined('ABSPATH') ) exit; // No access of directly access
ini_set( 'memory_limit', '256M' );

Aunque WordPress tiene una constante que podría haber sido utilizada para este propósito y hacer el código más legible y sostenible, el programador optó por una solución más complicada.

Además, si examinas el código relacionado con la necesidad de memoria, te darás cuenta de que algunos programadores necesitan con urgencia una revisión de sus conocimientos.

En resumen, aquí tienes la solución. Puedes ajustarla según sea necesario, pero recuerda que cuando te encuentres con otro problema en el futuro, especialmente después de una actualización, deberás recordar esta solución.

Te dejo un enlace sobre el tema en mi wiki, Gestión y configuración de la memoria en WordPress

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *