Cómo solucionar el error 'Allowed memory size exhausted' en PrestaShop y WordPress
¿Qué significa el error "Allowed memory size exhausted"?
Si estás leyendo esto, es muy probable que hayas visto un mensaje parecido a este en tu tienda PrestaShop o en tu blog WordPress:
[WARNING]
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
No te asustes. Este error es uno de los más comunes en el mundo del hosting y, aunque parece un jeroglífico, tiene una explicación muy sencilla. Te lo voy a traducir:
Tu sitio web (WordPress o PrestaShop) tiene un "límite de memoria" asignado por el servidor. Ese límite es como el espacio que tiene tu web para trabajar en cada petición. Si tu web necesita más memoria de la que tiene asignada, el servidor corta la ejecución y muestra ese error.
¿Por qué pasa? Las causas más frecuentes son:
- Un plugin o módulo mal optimizado que consume demasiados recursos.
- Un tema que no está bien programado.
- Una base de datos muy grande o con muchas consultas pesadas.
- Un límite de memoria demasiado bajo configurado en el servidor (algo muy típico en hostings económicos).
La buena noticia es que, en la mayoría de los casos, puedes solucionarlo tú mismo sin necesidad de ser un experto en Linux o SysAdmin. Vamos a verlo paso a paso.
Paso 1: Verifica cuál es tu límite actual de memoria
Antes de cambiar nada, necesitas saber cuánta memoria tienes asignada. Esto te ayudará a entender si el problema es un límite muy bajo o un consumo excesivo.
En WordPress
- Ve a Panel de administración → Herramientas → Salud del sitio.
- En la pestaña Información → Servidor, busca el dato llamado "límite de memoria PHP" (o
memory_limit).
Normalmente verás un valor como 64M, 128M o 256M. Si es 32M o 64M, es muy probable que ese sea el origen del problema.
En PrestaShop
- Ve a Parámetros avanzados → Información.
- Busca la sección Configuración del servidor y localiza el valor de
memory_limit.
Una vez que sepas tu valor, pasemos a la acción.
Paso 2: Aumenta el memory limit desde el archivo wp-config.php (WordPress)
Este es el método más rápido y efectivo para WordPress. Solo necesitas acceso al panel de control de tu hosting (cPanel, Syspanel, DirectAdmin, etc.) o a un cliente FTP.
[INFO]
Syspanel es el panel de control que utilizamos en nuestros servidores. Si tu hosting usa Syspanel, accede a través dehttps://tu-dominio.com:2106con tus credenciales.
Procedimiento:
- Accede al administrador de archivos de tu hosting o conéctate por FTP.
- Localiza la carpeta raíz de tu WordPress (normalmente
public_htmlohtdocs). - Busca el archivo
wp-config.php. Haz clic derecho y edítalo. - Busca la línea que dice
define('WP_DEBUG', false);o similar. - Justo antes de esa línea (o antes de la línea final
/* That's all, stop editing! */), añade este código:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '256M');
- Guarda el archivo y sube los cambios.
Con esto le estás diciendo a WordPress que puede usar hasta 256 MB de memoria en cada petición. Es un valor seguro y recomendado para la mayoría de los sitios.
[TIP]
Si tu web es muy grande o usas plugins de caché, puedes subirlo a512M. Pero no te pases de esa cifra si no es necesario, porque podría afectar al rendimiento del servidor.
Paso 3: Aumenta el memory limit en PrestaShop
En PrestaShop no hay un archivo equivalente al wp-config.php, pero puedes hacerlo modificando el archivo config/defines.inc.php.
Procedimiento:
- Accede por FTP o al administrador de archivos de tu hosting.
- Ve a la carpeta
configdentro de la instalación de PrestaShop. - Edita el archivo
defines.inc.php. - Busca la línea que dice:
define('_PS_MEMORY_LIMIT_', '128M');
- Cámbiala por:
define('_PS_MEMORY_LIMIT_', '256M');
- Guarda y sube el archivo.
[WARNING]
Asegúrate de que el archivodefines.inc.phpno tenga permisos de escritura para el resto de usuarios. Normalmente debería estar en444(solo lectura). Si no puedes editarlo, cambia temporalmente los permisos a644, edítalo y vuelve a ponerlo en444.
Paso 4: Modifica el archivo .htaccess (método universal)
Si el paso anterior no funciona (a veces el hosting ignora esos valores), puedes forzar el límite desde el archivo .htaccess de la raíz de tu instalación.
Procedimiento:
- Accede al administrador de archivos o FTP.
- Busca el archivo
.htaccessen la raíz (si no existe, créalo con un editor de texto plano). - Añade las siguientes líneas al principio del archivo:
php_value memory_limit 256M
php_value max_execution_time 300
- Guarda y sube.
[WARNING]
Este método solo funciona si tu servidor usa Apache con módulomod_php. Si usas Nginx o PHP-FPM, este archivo no tendrá efecto. En ese caso, usa el siguiente método.
Paso 5: Crea un archivo php.ini personalizado
Esta es la solución más "profesional" y funciona en la mayoría de los servidores, incluso en Nginx o LiteSpeed.
Procedimiento:
- En la raíz de tu instalación (o en una carpeta llamada
php.inidentro depublic_html), crea un archivo llamadophp.ini. - Dentro, escribe:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
- Guarda el archivo.
[TIP]
Si tu hosting tiene una carpetaphp.inien la raíz, coloca el archivo ahí. Si no, créala tú mismo. Eso asegura que se aplique a todos los subdirectorios.
Paso 6: ¿Usas Syspanel? Ajusta la configuración de PHP desde el panel
Si tu hosting utiliza Syspanel (acceso por el puerto 2106), tienes una forma aún más sencilla de hacerlo sin tocar archivos.
Procedimiento:
- Accede a
https://tu-dominio.com:2106e inicia sesión. - Busca la sección "PHP" o "Configuración de PHP" en el menú lateral.
- Selecciona la versión de PHP que estás usando.
- Busca la directiva
memory_limity cámbiala a256Mo512M. - Guarda los cambios y reinicia PHP-FPM si es necesario (Syspanel suele darte un botón para hacerlo).
Este método es el más limpio, porque no tienes que tocar código y el cambio se aplica de forma global en tu hosting.
Paso 7: ¿Y si el error persiste? Diagnóstico avanzado
Si ya has subido el límite a 256M o 512M y el error sigue apareciendo, el problema no es el límite, sino que algo en tu web está consumiendo demasiada memoria. Aquí tienes que hacer de detective:
En WordPress
- Desactiva todos los plugins y activa uno por uno para ver cuál causa el error.
- Cambia temporalmente a un tema por defecto (como Twenty Twenty-Four) para descartar el tema.
- Usa un plugin de caché como W3 Total Cache o WP Rocket para reducir el consumo.
- Optimiza la base de datos con plugins como WP-Optimize.
En PrestaShop
- Desactiva los módulos no esenciales desde el back-office.
- Revisa el log de errores en
Parámetros avanzados→Registros. - Limpia la caché en
Parámetros avanzados→Rendimiento→Vaciar caché. - Revisa si tienes demasiados módulos de terceros instalados; suelen ser los principales culpables.
[WARNING]
Si después de todo esto el error sigue, es muy probable que tu hosting no esté bien configurado o que tengas un ataque de fuerza bruta o malware. Contacta con tu proveedor de hosting y pide un análisis del servidor.
Preguntas frecuentes (FAQ)
¿Cuál es el límite de memoria recomendado para WordPress?
Para un sitio estándar, 128M es suficiente. Si usas WooCommerce, builders como Elementor o tienes muchos plugins, sube a 256M. Para sitios grandes, 512M es el máximo recomendado sin necesidad de un servidor dedicado.
¿Y para PrestaShop?
PrestaShop es más exigente. Te recomiendo empezar en 256M y subir a 512M si tienes muchos módulos o catálogos grandes.
¿Qué pasa si pongo un límite demasiado alto?
Nada malo, pero puedes saturar el servidor si tienes muchos visitantes simultáneos. Cada visita usará más memoria, y si el servidor no tiene suficiente RAM, el sitio se volverá lento o dará error 500.
¿Puedo cambiar el memory limit desde el archivo php.ini global?
Sí, pero necesitas acceso root o permisos de administrador en el servidor. Si usas un hosting compartido, no podrás tocar el php.ini global, así que usa los métodos anteriores.
¿Qué es el max_execution_time?
Es el tiempo máximo (en segundos) que un script PHP puede ejecutarse antes de ser detenido. Si tu web tarda mucho en procesar, puede dar un error similar. Subirlo a 300 es seguro.
¿Syspanel es lo mismo que HestiaCP?
Syspanel es la versión mejorada y rebrandada de HestiaCP que usamos en nuestros servidores. Accede siempre por el puerto 2106 para gestionar dominios, bases de datos y configuración de PHP.
Resumen final
El error "Allowed memory size exhausted" es más un aviso que una catástrofe. Sigue estos pasos en orden y, en el 90% de los casos, lo resolverás en menos de 15 minutos:
- Comprueba tu límite actual.
- Añade el límite en
wp-config.php(WordPress) odefines.inc.php(PrestaShop). - Si no funciona, usa
.htaccess. - Si tampoco, crea un
php.inipersonalizado. - Si usas Syspanel, hazlo desde el panel (puerto 2106).
- Si el error persiste, desactiva plugins/módulos y revisa el consumo.
Y recuerda: si no te sientes cómodo tocando archivos, siempre puedes contactar con tu proveedor de hosting y pedirles que aumenten el memory_limit por ti. Es un cambio trivial para ellos.
[TIP]
Después de hacer cualquier cambio, siempre limpia la caché de tu navegador y de tu sitio web. A veces el navegador guarda el error anterior y te puede confundir.
Espero que este artículo te haya sido de ayuda. Si tienes más dudas, déjalas en los comentarios o abre un ticket de soporte. ¡Buena suerte con tu web!
