Guía de tecnologías

Aumentar la memoria de PHP: solución práctica y comprobaciones

5 min read Desarrollo Actualizado 09 Oct 2025
Aumentar la memoria de PHP — Guía rápida
Aumentar la memoria de PHP — Guía rápida

Importante: reiniciar Apache/httpd puede resolver el bloqueo inmediato, pero no corrige la causa raíz si un script consume más memoria de la prevista.

Ejemplo del error observado

*PHP Fatal error: Out of memory (allocated 49545216) (tried to allocate 77824 bytes) in /home/xxxxx/public_html/xyz/admin.php(1758) on line 40*

Este tipo de mensaje indica que PHP intentó asignar más memoria de la permitida por la directiva memory_limit.

Por qué ocurre

Breve definición: memory_limit es la directiva en php.ini que fija la memoria máxima (por proceso PHP) que puede usar un script. Si un script necesita más memoria de la permitida, PHP aborta y muestra un “fatal error”.

Causas comunes:

  • Plugins o scripts mal optimizados (p. ej. WordPress, importadores, generadores de imágenes).
  • Cargas puntuales de trabajo que piden subprocesos o buffers grandes.
  • Valores demasiado bajos en hosting compartido.

Formas prácticas para aumentar la memoria de PHP

  1. Editar php.ini (recomendado si tienes acceso):

    • Crea un archivo en la raíz pública para comprobar qué php.ini lee PHP. Por ejemplo, crea check.php con el contenido:
    • Accede a http://tudominio/check.php y busca “Loaded Configuration File” para conocer la ruta real del php.ini (normalmente puede estar en /usr/local/lib/php.ini).
    • Abre ese php.ini con un editor adecuado (por ejemplo TextPad en Windows o nano/vi en Linux) y cambia:
    memory_limit = 8M

    a un valor mayor, p. ej.:

    memory_limit = 32M
    • Reinicia el servicio web (Apache/httpd o php-fpm) para aplicar el cambio.
  2. Establecer memory_limit desde el propio script (si no puedes tocar php.ini):

    • Añade al principio del archivo que da el error (en mi caso /home/xxxxx/public_html/xyz/admin.php) una línea como:
    ini_set('memory_limit', '32M');
    • Esto afectará solo a ese proceso PHP en ejecución.
  3. Usar .htaccess (solo si el servidor Apache lo permite):

    • En el .htaccess del sitio añade:
    php_value memory_limit 32M
    • No funciona en algunos entornos (por ejemplo cuando PHP corre como php-fpm y no como módulo de Apache).
  4. Para WordPress: definir WP_MEMORY_LIMIT en wp-config.php

    • Añade o edita esta línea en wp-config.php:
    define('WP_MEMORY_LIMIT', '32M');
    • Nota: WordPress puede ignorar este valor si el servidor no permite aumentos por nivel de usuario o si el proveedor ha fijado un tope.

Pasos de diagnóstico antes de subir la memoria

  1. Reproduce el error en un entorno de pruebas si es posible.
  2. Habilita logs PHP (error_log) y revisa backtrace y archivos implicados.
  3. Identifica si un plugin/función concreta causa el pico de memoria.
  4. Prueba desactivar temporalmente plugins o usar un tema por defecto.
  5. Mide el impacto: si solo un script puntual lo necesita, aumente el límite solo para ese script.

Mini-metodología para decidir cuánto aumentar

  1. Empieza por duplicar el valor: 8M → 16M. Si sigue fallando, 32M.
  2. Busca patrones: si subidas menores resuelven, evita poner valores excesivos generales.
  3. En entornos de producción con carga alta, opta por optimizar el código antes que inflar memory_limit.

Alternativas y cuándo no sirve aumentar memory_limit

  • Cuando el problema es una fuga de memoria en el propio script: aumentar memoria solo retrasa el fallo.
  • Si el servidor es compartido y el proveedor impone límites, no podrás cambiarlo; contacta al hosting.
  • Si la causa es una operación no optimizada (ej. consultas que traen millones de filas), refactoriza el proceso para usar streaming o paginación.

Lista de comprobaciones rápida (checlist para desarrollador / sysadmin)

  • ¿Qué php.ini está cargado? (usar phpinfo())
  • ¿Se reproduce el error en entorno de staging?
  • ¿Hay plugins o scripts recientes actualizados?
  • ¿Los logs de PHP muestran el archivo y la línea exacta?
  • ¿Es viable aumentar memory_limit temporalmente y monitorear?
  • ¿Contactar al proveedor de hosting es necesario?

Niveles de madurez para la gestión de memoria (heurística)

  • Nivel 1 (reactivo): reiniciar Apache al fallo.
  • Nivel 2 (correctivo): aumentar memory_limit temporalmente y monitorear.
  • Nivel 3 (preventivo): instrumentar profiling y optimizar scripts.
  • Nivel 4 (proactivo): límites adecuados + alertas SLI/SLO para uso de memoria.

Seguridad y privacidad

  • No incluyas en los logs información sensible (credenciales, tokens).
  • Evita exponer phpinfo() en producción: bórralo tras usarlo o protéjelo por IP.

Glosario en una línea

  • php.ini: archivo de configuración principal de PHP.
  • memory_limit: directiva que fija la memoria máxima por proceso PHP.
  • .htaccess: archivo de configuración por directorio para Apache.
  • WP_MEMORY_LIMIT: constante de WordPress para solicitar más memoria.
  • phpinfo(): función que muestra configuración y rutas usadas por PHP.

Casos reales y ejemplos rápidos

  • Caso 1: Plugin de importación en WordPress consume memoria creciente. Solución: optimizar importador o procesar en lotes; usar define(‘WP_MEMORY_LIMIT’,’64M’) temporalmente.
  • Caso 2: PHP corriendo como php-fpm: cambiar .htaccess no tiene efecto; hay que tocar php.ini o pool config de php-fpm.

Preguntas frecuentes

¿Puedo poner memory_limit en valores muy altos para evitar problemas?

No es recomendable: subir mucho la memoria puede ocultar fugas y afectar a otros procesos en el servidor. Mejor diagnosticar y optimizar.

¿Qué valor es “seguro” por defecto?

Históricamente algunos PHP venían con 8M por defecto para scripts web simples. Hoy en día valores comunes en CMS son 32M o 64M, dependiendo de las necesidades.

¿Necesito reiniciar Apache después de cambiar php.ini?

Sí: si PHP corre como módulo de Apache (mod_php) hay que reiniciar Apache/httpd. Si usa php-fpm, reinicia php-fpm.

Resumen

Aumentar la memoria de PHP suele resolver inmediatamente errores “Out of memory”, pero lo correcto es identificar si el consumo excesivo viene de código defectuoso, plugins o procesos mal diseñados. Sigue el flujo: identificar php.ini → probar incrementos controlados → monitorizar → optimizar o solicitar soporte al host.

Crédito de imagen: Clarkandransom

Autor
Edición

Materiales similares

Cómo descargar películas y series de Netflix
Guía técnica

Cómo descargar películas y series de Netflix

Lista blanca Flash en Windows RT: guía rápida
Guía técnica

Lista blanca Flash en Windows RT: guía rápida

Photoshop CS5 en Ubuntu 10.10 con Wine
Linux

Photoshop CS5 en Ubuntu 10.10 con Wine

Descargar películas y series de Netflix sin conexión
Streaming

Descargar películas y series de Netflix sin conexión

Corregir 'Firefox ya se está ejecutando' — Solución rápida
Soporte técnico

Corregir 'Firefox ya se está ejecutando' — Solución rápida

Tim Cook: aprender a programar antes que inglés
Educación tecnológica

Tim Cook: aprender a programar antes que inglés