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

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach