Aumentar la memoria de PHP: solución práctica y comprobaciones
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
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.
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.
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).
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
- Reproduce el error en un entorno de pruebas si es posible.
- Habilita logs PHP (error_log) y revisa backtrace y archivos implicados.
- Identifica si un plugin/función concreta causa el pico de memoria.
- Prueba desactivar temporalmente plugins o usar un tema por defecto.
- 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
- Empieza por duplicar el valor: 8M → 16M. Si sigue fallando, 32M.
- Busca patrones: si subidas menores resuelven, evita poner valores excesivos generales.
- 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
Materiales similares

Cómo descargar películas y series de Netflix

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

Photoshop CS5 en Ubuntu 10.10 con Wine

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

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