¿Qué es el error Allowed Memory Size en PHP?
El error Fatal error: Allowed memory size of X bytes exhausted es uno de los problemas más comunes a los que se enfrentan los desarrolladores web. Ocurre cuando un script de PHP intenta consumir más memoria RAM de la que tiene asignada por defecto en el archivo de configuración php.ini. Esto suele suceder al procesar imágenes pesadas, realizar consultas masivas a bases de datos o ejecutar bucles infinitos.
Causas principales del agotamiento de memoria en PHP
- Un límite de memoria demasiado bajo configurado en el servidor (por ejemplo, 128MB o 256MB).
- Consultas SQL ineficientes que cargan demasiados registros en la memoria RAM simultáneamente.
- Funciones de procesamiento de imágenes o archivos grandes sin liberación previa de recursos.
- Bucles infinitos o recursividad mal implementada en el código fuente.
Método 1: Aumentar el límite de memoria en el archivo php.ini
- Localiza tu archivo
php.inien el servidor. Su ruta varía según tu sistema operativo y versión de PHP (por ejemplo,/etc/php/8.1/apache2/php.ini). - Abre el archivo con un editor de texto con permisos de administrador.
- Busca la directiva
memory_limity cambia su valor según tus necesidades, por ejemplo:memory_limit = 512M. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) para aplicar la nueva configuración.
Método 2: Modificar el límite de memoria mediante .htaccess
Si estás en un entorno de hosting compartido y no tienes acceso al archivo php.ini principal, puedes intentar sobrescribir la directiva utilizando el archivo .htaccess en la raíz de tu proyecto.
- Abre o crea el archivo
.htaccessen el directorio principal de tu sitio web. - Agrega la siguiente línea al final del archivo:
php_value memory_limit 512M. - Guarda el archivo y recarga tu página web para verificar si el error ha desaparecido.
Método 3: Aumentar el límite directamente en el script PHP
Si el error ocurre únicamente en un script o tarea específica (como un proceso Cron o la importación de un archivo grande), puedes incrementar el límite de memoria de forma temporal desde el propio código fuente usando la función ini_set.
Agrega la siguiente línea al principio de tu archivo PHP:
ini_set('memory_limit', '512M');Ten en cuenta que esta solución solo afectará al script donde se declare y está sujeta a los permisos máximos permitidos por tu proveedor de hosting.