¿Qué es el Error Fatal 'Allowed Memory Size Exhausted' en PHP?
El error Fatal error: Allowed memory size of X bytes exhausted es uno de los problemas más comunes a los que nos enfrentamos los desarrolladores web al trabajar con PHP. Este fallo ocurre cuando un script intenta consumir más memoria RAM de la que tiene asignada por defecto en la configuración del servidor, lo que provoca la interrupción inmediata de la ejecución del código.
Causas Principales del Error de Memoria en PHP
Entre los motivos más frecuentes que provocan este consumo excesivo de recursos se encuentran:
- Bucles infinitos o recursividad mal implementada que acumulan datos en memoria.
- Consultas SQL masivas que intentan cargar miles de registros completos en un solo array.
- Procesamiento de archivos pesados, imágenes grandes o lectura ineficiente de documentos CSV y XML.
- Plugins, temas o librerías de terceros mal optimizados en CMS como WordPress o frameworks personalizados.
Método 1: Modificar el límite de memoria en el archivo php.ini
La forma más limpia y permanente de solucionar este problema a nivel de servidor es editando el archivo de configuración global php.ini.
- Localiza tu archivo
php.inien tu servidor (su ruta común en Ubuntu es/etc/php/8.x/apache2/php.inio similar). - Abre el archivo con un editor de texto con privilegios de administrador.
- Busca la directiva
memory_limity cambia su valor actual por uno mayor, por ejemplo:memory_limit = 512M. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) ejecutando el comando
sudo systemctl restart apache2.
Método 2: Incrementar el límite de memoria mediante .htaccess
Si tu sitio web corre sobre un servidor Apache y no tienes acceso directo al archivo php.ini principal, puedes utilizar el archivo de configuración del directorio.
- Accede al directorio raíz de tu proyecto mediante FTP o tu panel de control.
- Busca o crea un archivo llamado
.htaccess. - Añade la siguiente línea de código al inicio del archivo:
php_value memory_limit 512M. - Guarda los cambios y recarga tu página web para comprobar que el error ha desaparecido.
Método 3: Aumentar el límite directamente desde el código PHP
Si necesitas aplicar una solución temporal y específica únicamente para un script pesado (como una importación masiva), puedes declarar el límite de memoria directamente en tu archivo PHP.
- Abre el archivo PHP donde se genera el error.
- Añade la siguiente función justo en la primera línea después de la etiqueta de apertura de PHP:
ini_set('memory_limit', '512M');. - Prueba ejecutar el script nuevamente. Recuerda que este método solo afecta al archivo donde se declara.