Introducción
Uno de los errores más comunes a los que se enfrentan los desarrolladores web al trabajar con PHP y sistemas de gestión de contenido como WordPress, Magento o aplicaciones personalizadas es el temido Fatal error: Allowed memory size of X bytes exhausted. Este fallo detiene por completo la ejecución del script y muestra una pantalla en blanco o un error 500 en el sitio web.
Causas Principales del Error
El origen de este problema está directamente relacionado con la asignación de recursos en el archivo de configuración del servidor. Las causas más frecuentes incluyen:
- Un script mal optimizado que realiza consultas masivas a la base de datos sin paginación.
- Bucle infinito en el código fuente que consume memoria iteración tras iteración.
- Plugins, temas o módulos de terceros mal programados que sobrepasan el límite predeterminado por PHP.
- Un límite de memoria (
memory_limit) demasiado bajo configurado por defecto en el archivophp.ini.
Método 1: Modificar el límite en el archivo php.ini
La forma más limpia y recomendada a nivel global es aumentar el límite de memoria directamente desde el archivo de configuración principal de PHP.
- Localiza tu archivo
php.inien el servidor (su ruta varía según el 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 privilegios de administrador.
- Busca la línea que contiene la directiva
memory_limit. - Cambia el valor actual por uno mayor, por ejemplo:
memory_limit = 512M. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) ejecutando
sudo systemctl restart apache2.
Método 2: Aumentar la memoria mediante el archivo .htaccess
Si tu servidor utiliza Apache y no tienes acceso directo al archivo php.ini (por ejemplo, en un hosting compartido), puedes modificar los parámetros mediante el archivo .htaccess.
- Accede al directorio raíz de tu proyecto mediante FTP o el Administrador de Archivos de tu Hosting.
- Localiza el archivo
.htaccess(asegúrate de mostrar los archivos ocultos si es necesario). - Agrega la siguiente línea de código al final 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: Definir el límite en tiempo de ejecución con ini_set()
Si el problema ocurre en un script PHP específico o deseas evitar modificar configuraciones globales del servidor, puedes incrementar la memoria programáticamente al inicio de tu archivo principal (por ejemplo, index.php).
- Abre el archivo PHP donde deseas aplicar la solución.
- Añade la siguiente función justo después de la etiqueta de apertura de PHP:
ini_set('memory_limit', '512M');. - Guarda el archivo y prueba la ejecución de tu aplicación nuevamente.