¿Qué es el error Allowed Memory Exhausted en PHP?
El error Fatal error: Allowed memory size of X bytes exhausted es uno de los problemas más comunes en el desarrollo web con PHP. Ocurre cuando un script, un plugin mal optimizado o una consulta pesada intenta consumir más memoria RAM de la que PHP tiene asignada por defecto en el archivo de configuración php.ini.
Causas principales del agotamiento de memoria en PHP
Entre las causas más frecuentes que provocan este fallo en entornos de desarrollo y producción se encuentran:
- Bucles infinitos o procesamiento masivo de datos sin liberación adecuada de variables.
- Plugins o temas en CMS como WordPress o frameworks como Laravel que realizan consultas recursivas pesadas.
- Un límite de memoria configurado demasiado bajo (por ejemplo, 128M) para aplicaciones modernas.
- Funciones de manipulación de imágenes o importación de archivos CSV grandes.
Método 1: Modificar el archivo php.ini
La forma más limpia y recomendada de solucionar este problema de forma permanente a nivel de servidor es editando el archivo de configuración principal de PHP.
- Localiza tu archivo
php.inien el servidor (puedes verificar su ruta ejecutandophp --inien la terminal). - Abre el archivo con un editor de texto o mediante SSH.
- Busca la directiva
memory_limity cambia su valor según las necesidades de tu proyecto, por ejemplo:memory_limit = 512M. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) ejecutando
sudo systemctl restart apache2o el servicio correspondiente.
Método 2: Aumentar el límite mediante .htaccess
Si estás utilizando un servidor web Apache y no tienes acceso directo al archivo php.ini principal, puedes sobrescribir esta directiva utilizando el archivo .htaccess ubicado en la raíz de tu proyecto.
- Accede al directorio raíz de tu sitio web mediante FTP o el administrador de archivos de tu hosting.
- Busca el archivo llamado
.htaccess(asegúrate de mostrar los archivos ocultos). - Añade la siguiente línea al final del archivo:
php_value memory_limit 512M. - Guarda los cambios y recarga tu página web para verificar que el error haya desaparecido.
Método 3: Definir el límite directamente en el código PHP
Si necesitas aplicar una solución temporal o específica para un script que requiere un alto consumo de recursos, puedes declarar el límite de memoria directamente en tiempo de ejecución al inicio de tu archivo PHP principal.
- Abre el archivo PHP donde se origina el error (por ejemplo,
index.phpo un script de importación). - Agrega la siguiente función en la primera línea después de la etiqueta de apertura de PHP:
ini_set('memory_limit', '512M');. - Guarda el archivo y prueba ejecutar el proceso nuevamente. Recuerda revisar la optimización de tu código para evitar depender exclusivamente de este parche.