Guía de solución

Cómo aumentar el límite de memoria de PHP en WordPress (WP_MEMORY_LIMIT)

1 de mayo de 2026 Actualizado el 1 may 2026

Uno de los mensajes de error más comunes de WordPress dice algo así como "Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /wp-includes/...". Suele aparecer en el peor momento posible: en mitad de una actualización de plugin, al guardar una página larga en el editor, durante subidas de medios o justo después de cambiar a un tema más exigente. La solución es casi siempre subir el límite de memoria de PHP. La pega es que no hay solo un límite de memoria. WordPress tiene al menos tres distintos, más un cuarto a nivel de PHP, y interactúan de formas que sorprenden a la gente. Esta guía repasa cuál se aplica en cada situación y cómo subirlo en los distintos setups de hosting.

¿De qué "límite de memoria" estamos hablando exactamente?

Cuando se solicita una página de WordPress, potencialmente entran en juego cuatro límites:

  • PHP memory_limit en php.ini. El techo duro que impone el propio PHP. Nada dentro de WordPress puede ir nunca por encima. Los valores por defecto típicos en hosts modernos son 128M o 256M.
  • WP_MEMORY_LIMIT. La constante propia de WordPress, definida en wp-config.php. Por defecto 40M. WordPress sube el límite de PHP a este valor al arrancar, pero solo si WP_MEMORY_LIMIT es mayor que el límite actual de PHP. Si tu memory_limit de PHP ya es 256M, esta constante no tiene efecto.
  • WP_MAX_MEMORY_LIMIT. Una constante separada que solo aplica dentro de wp-admin (el escritorio, las pantallas de edición, la gestión de plugins y temas, la biblioteca de medios). Por defecto 256M. Sube este valor cuando las páginas de admin se queden sin memoria pero el frontend vaya bien.
  • Overrides del hoster. Muchos hosts compartidos y gestionados imponen un tope duro al memory_limit de PHP a nivel de servidor, sin importar lo que diga tu php.ini o wp-config.php. En esos hosts, subir el límite por tu cuenta falla en silencio y tienes que pedírselo al soporte.

El modelo mental práctico: WP_MEMORY_LIMIT es para el frontend, WP_MAX_MEMORY_LIMIT es para el admin, y ambos son suelos, no techos. Solo pueden subir el límite efectivo, nunca bajarlo por debajo del ajuste de PHP. El ajuste de PHP es el techo real.

¿Cuánta memoria necesita realmente un sitio WordPress?

Una escala aproximada útil, basada en lo que ve InspectWP a lo largo de miles de escaneos:

  • 64M. Una instalación limpia de WordPress con un tema pequeño y cinco plugins bien comportados. Realista hoy solo en sitios muy simples, e incluso ahí justo.
  • 128M. El mínimo de facto para cualquier sitio real en 2026. Tema por defecto, diez o quince plugins, sin maquetador. La mayoría de hosts lo trae por defecto.
  • 256M. El objetivo razonable para la mayoría de sitios. Maquetadores (Elementor, Divi, Bricks, Beaver Builder), WooCommerce, frameworks de tema más grandes, plugins de optimización de imágenes. También es el valor por defecto de WP_MAX_MEMORY_LIMIT para el admin, lo cual no es coincidencia.
  • 512M. Tiendas WooCommerce con unos cientos de pedidos y muchas extensiones. Sitios que ejecutan suites SEO pesadas junto con un maquetador. Procesamiento de imágenes en bibliotecas de medios grandes.
  • De 768M a 1024M. Tiendas WooCommerce más grandes, sitios multilingües con WPML o Polylang, sitios de membresía con lógica de roles compleja, sitios que hacen importaciones programadas.
  • Por encima de 1024M. Si realmente lo necesitas en un sitio normal, suele haber algo mal. Un plugin concreto está fugando memoria, un trabajo de importación está cargando toda la base de datos en un único proceso PHP, o un tema está haciendo algo que no debería. Subir el límite saldrá del paso por ahora, pero la solución real está en otra parte.

La memoria es barata, pero la memoria sin límites esconde bugs. Lo correcto es subir el límite lo justo para que el sitio funcione cómodo, no ponerlo a 4G "por si acaso".

Opción 1: Subir WP_MEMORY_LIMIT en wp-config.php

Es el cambio más sencillo y portable. Abre wp-config.php en el directorio raíz de WordPress y añade las siguientes líneas, en cualquier sitio por encima del comentario que pone /* That's all, stop editing! Happy publishing. */:

define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

Guarda el archivo. WordPress aplica los nuevos límites en la siguiente petición. El frontend dispone ahora de hasta 256M, el admin de hasta 512M. No hace falta reiniciar nada.

Advertencia importante: esto solo funciona si el memory_limit a nivel de PHP es al menos tan alto como el valor que pones. Si PHP está topado a 128M por el host, definir WP_MEMORY_LIMIT a 512M no hace nada. WordPress intenta subir el límite y PHP se niega. El mensaje de error sigue igual. Continúa con la Opción 2.

Opción 2: Subir el memory_limit de PHP a nivel de PHP

Si WP_MEMORY_LIMIT por sí solo no basta, hay que subir el ajuste real de PHP. Dónde lo cambias depende del host:

En hosting gestionado (Raidboxes, Kinsta, WP Engine, Cloudways, SiteGround, Pressable)

Estos hosts casi todos exponen un ajuste en su panel. Busca "PHP settings", "PHP memory limit" o similar. El cambio suele aplicarse en segundos, sin reinicio por tu parte. Algunos hosts (Raidboxes, WP Engine) topan el máximo en 512M o 768M por motivos de rendimiento. Si realmente necesitas más, soporte normalmente lo sube bajo petición, pero te preguntará el motivo primero, que es la reacción correcta.

En hosting compartido con cPanel/Plesk (IONOS, All Inkl, Hostinger, DomainFactory, Strato)

Tanto cPanel como Plesk tienen un panel de ajustes de PHP donde se puede establecer memory_limit por dominio. Busca "MultiPHP INI Editor" (cPanel) o "PHP Settings" (Plesk). Eliges el valor, guardas, listo. Algunos hosts esconden el ajuste en un submenú "PHP options".

Si el panel falta o el ajuste no surte efecto, deja un archivo .user.ini en el directorio raíz de WordPress con esta única línea:

memory_limit = 256M

El mecanismo de .user.ini está soportado por cualquier setup moderno de PHP que ejecute CGI, FastCGI o PHP FPM, lo cual es básicamente cualquier host hoy. PHP recoge el archivo automáticamente; la única peculiaridad es un tiempo de caché por defecto de cinco minutos antes de que los cambios surtan efecto, tras los cuales el nuevo límite se aplica en la siguiente petición.

En un VPS o servidor dedicado autogestionado

Edita php.ini directamente. Encuentra el php.ini activo con php --ini en la línea de comandos; la ruta varía según la distribución y la versión de PHP. Busca la línea memory_limit, cambia el valor, guarda. Recarga PHP FPM con sudo systemctl reload php8.2-fpm (ajusta el número de versión) o reinicia Apache si usas mod_php.

Solo Apache: .htaccess (legado)

En setups antiguos de Apache con mod_php (raro en hosting moderno), php_value memory_limit 256M en .htaccess puede funcionar. Si tu host ejecuta PHP vía FastCGI o PHP FPM, esta directiva simplemente se ignora. Usa .user.ini en su lugar.

Cómo verificar qué límite está realmente activo

Saber cuál de los cuatro límites se aplica lleva treinta segundos:

  1. En el admin de WordPress, abre Herramientas, Salud del sitio, Información.
  2. Despliega la sección Servidor. Verás el memory_limit de PHP activo.
  3. Despliega la sección Constantes de WordPress. Verás WP_MEMORY_LIMIT y WP_MAX_MEMORY_LIMIT, con sus valores actuales.

Si las constantes de WordPress muestran tus nuevos valores pero el memory_limit de PHP sigue más bajo, el host lo está topando a nivel de servidor. Habla con soporte o usa el panel del hoster de la Opción 2.

Para una comprobación precisa desde fuera del escritorio, deja este archivo temporal en wp-content/mu-plugins/check-memory.php:

<?php
add_action('init', function () {
    if (current_user_can('manage_options') && isset($_GET['check_memory'])) {
        wp_die('PHP memory_limit: ' . ini_get('memory_limit'));
    }
});

Luego abre https://tudominio.com/?check_memory=1 mientras estás logueado como admin. La página muestra el límite que PHP aplica realmente para esa petición. Borra el archivo cuando hayas terminado.

¿Y si subir el límite no soluciona el error?

Si "Allowed memory size exhausted" persiste tras subir todos los límites a un valor sensato, el problema ya no es "WordPress necesita más memoria". Busca alguna de estas causas:

  • Un plugin concreto es el culpable. Desactiva los plugins uno a uno y recarga. El error señala el plugin en la ruta del archivo: /wp-content/plugins/NOMBREPLUGIN/.... Ese plugin o tiene una fuga de memoria o está haciendo algo realmente intensivo en memoria que debería partirse en trabajos más pequeños.
  • Operaciones masivas. Importar miles de productos vía el importador CSV de WooCommerce, regenerar miniaturas para toda una biblioteca de medios o lanzar una auditoría SEO completa pueden tumbar cualquier límite de memoria. La respuesta correcta suele ser pasar a WP CLI para estas tareas. La CLI tiene un límite de memoria propio, normalmente mucho más alto, y procesa tareas en lotes sin la sobrecarga del ciclo de vida completo de petición de WordPress.
  • WP Cron atascado en una tarea pesada. Los trabajos en segundo plano que se ejecutan vía wp-cron.php comparten el mismo límite de memoria que una petición normal. Si una tarea programada intenta procesar una cola enorme de una sola vez, falla repetidamente sin ningún síntoma obvio en el frontend. Desactivar el WP Cron interno y ejecutarlo vía cron del sistema suele ayudar.
  • Caché de objetos mal configurada. Una instancia de Redis o Memcached infradimensionada combinada con la caché de objetos persistente de WordPress puede generar una presión de memoria rara bajo carga. Conviene comprobarlo si tienes alguna y el problema solo aparece con tráfico.

Errores comunes a evitar

  • Poner WP_MEMORY_LIMIT más bajo que el por defecto de PHP. Inútil. WordPress solo sube el límite, nunca lo baja. define('WP_MEMORY_LIMIT', '32M') en un host con PHP a 256M no hace nada.
  • Poner WP_MEMORY_LIMIT y WP_MAX_MEMORY_LIMIT al mismo valor. Funciona, pero renuncias a la posibilidad de que el admin tenga más memoria que el frontend, que es justo el sentido de tener dos constantes.
  • Poner el valor como número. define('WP_MEMORY_LIMIT', 256) establece el límite en 256 bytes, no 256 megabytes. Siempre con la unidad y entre comillas: '256M'.
  • Editar el wp-config.php equivocado. Si tu instalación está en un subdirectorio, tanto el directorio de instalación como el padre pueden tener un wp-config.php. Comprueba desde el directorio de WordPress hacia arriba y edita el que WordPress carga realmente.

Para la inmensa mayoría de sitios, dos líneas en wp-config.php más un memory_limit de PHP sensato desde el panel del hoster resuelven el error de forma permanente. Si no, el problema no es la memoria en sí, y subir el límite más alto solo retrasará el siguiente fallo.

Analiza tu sitio de WordPress ahora

InspectWP analiza tu sitio de WordPress en busca de problemas de seguridad, SEO, cumplimiento del RGPD y rendimiento, gratis.

Analiza tu sitio gratis