¿Qué es el error 'Allowed Memory Size Exhausted' en PHP?
El mensaje de error Fatal error: Allowed memory size of X bytes exhausted es uno de los fallos más habituales en el desarrollo web con PHP. Aparece cuando un script en ejecución requiere más memoria RAM de la que el servidor le tiene permitida por defecto.
Este límite es una medida de seguridad orientada a evitar que un script mal optimizado o con un bucle infinito consuma todos los recursos del servidor web y deje fuera de servicio a otros procesos.
Causas principales del fallo de memoria
- Límite predeterminado bajo: La configuración por defecto en el archivo
php.inisuele ser de 64M o 128M, insuficiente para procesar colecciones grandes de datos. - Procesamiento de imágenes pesadas: Librerías como GD o Imagick consumen mucha memoria al redimensionar o manipular archivos gráficos.
- Consultas masivas a la base de datos: Cargar miles de registros en un array sin paginación agota rápidamente el buffer de memoria.
- Bucles infinitos o fugas de memoria: Código ineficiente que acumula datos en variables globales dentro de iteraciones continuas.
Método 1: Incrementar la memoria desde el archivo php.ini
Esta es la solución más sólida si dispones de acceso al servidor o VPS. Modifica el límite global para todos los scripts PHP.
- Ubica el archivo
php.iniactivo en tu sistema. Puedes comprobar su ruta exacta creando un archivo con la funciónphpinfo();. - Abre el archivo con tu editor de texto y busca la directiva
memory_limit. - Cambia el valor asignado por una cifra superior, por ejemplo:
memory_limit = 256Momemory_limit = 512M. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) ejecutando
sudo systemctl restart apache2osudo systemctl restart php-fpm.
Método 2: Modificar el archivo .htaccess (en servidores Apache)
Si trabajas en un entorno de alojamiento compartido sin acceso directo a php.ini, puedes ajustar la variable desde la configuración de Apache.
- Accede a la carpeta raíz de tu proyecto mediante FTP o el administrador de archivos de tu panel.
- Abre o crea el archivo oculto
.htaccess. - Inserta la siguiente línea al final del documento:
php_value memory_limit 256M - Guarda el archivo y recarga tu aplicación web para comprobar el resultado.
Método 3: Ajustar el límite mediante código PHP en tiempo de ejecución
Si únicamente necesitas elevar la memoria asignada para un script pesado en particular (por ejemplo, una tarea de exportación de datos), puedes configurarlo al inicio del archivo.
Añade la siguiente directiva justo al comienzo de tu script PHP:
ini_set('memory_limit', '256M');
De esta forma, solo ese script específico tendrá disponible más memoria sin comprometer el resto del ecosistema de la aplicación.