Si está afectado por una falla fatal de PHP relacionada con un tamaño excesivo de memoria, tenemos instrucciones para solucionar el error hasta que pueda depurar su código.

Uno de los errores más comunes y frustrantes que encuentran los codificadores PHP es un error fatal relacionado con el tamaño de la memoria. Dicho error dice: “Error grave: el tamaño de memoria permitido de 8388608 bytes está agotado…” seguido de algo como “(intenté asignar XXXX bytes) en /home/www/file.module en la línea 12”. Este error fatal de PHP surge porque, de forma predeterminada, PHP tiene un límite de uso de memoria de 8 MB para cualquier script determinado. Esto es bueno porque no desea que un script PHP fraudulento derribe su servidor acaparando toda la memoria. Pero ocasionalmente tendrás un script PHP que normalmente excede el límite de 8 MB (por ejemplo, para importar o cargar).

Solucionar un error fatal de tamaño de memoria en PHP

Para solucionar el mensaje de error “Error grave: tamaño de memoria permitido de XXX bytes agotado…”, simplemente inserte esta línea de código en su secuencia de comandos en la parte superior:

ini_set(“límite_memoria”,”XXM“);

Reemplace XX arriba con la cantidad de memoria que desea asignar a PHP. En la captura de pantalla anterior, la configuración establecerá su límite de memoria en 16 MB. Puedes y debes modificar este número para que sea lo más bajo posible sin repetir ese mensaje de error. Esto sólo alterará el límite de memoria para ese archivo PHP en particular.

Alternativamente, puede modificar su archivo php.ini para aumentar el límite de memoria. Esto afectará a todos los scripts de su servidor. Simplemente abra php.ini y busque la línea que dice “memory_limit” y modifíquela:

límite_memoria=16M

El mismo error a lo largo de los años, pero con cifras mayores

He notado en mi propio archivo PHP.ini que mi valor predeterminado es mucho mayor, 128M. Entonces, si alguna vez recibiera este mensaje de error, diría: “Error grave: tamaño de memoria permitido de 134217728 bytes agotados…” y obviamente sería un problema mucho mayor. Pero tiene la misma solución que “Error grave: tamaño de memoria permitido de 8388608 bytes agotado…” o “Error grave: tamaño de memoria permitido de 16777216 bytes agotado…” o lo que sea. Aparentemente, el valor predeterminado de límite de memoria aumentó de 8 M a 16 M en PHP 5.2.0 y ahora es 128 M para las versiones más recientes de PHP. Esto explica por qué es posible que no reciba este mensaje de error en absoluto.

También puede desactivar el límite de memoria configurando Memory_limit en –1 en PHP.ini.

límite_memoria=-1

Sin embargo, esto no suele ser una buena idea por razones obvias.

Nota: También puedes usar la línea Memory_limit en tu página .htaccess.

Solucione los problemas de su código para que esta solución alternativa sea innecesaria

Ahora bien, recuerde, esto es sólo una solución alternativa. Realmente, tu script PHP debería no exceder los 8 MB, a menos que estés cargando archivos o haciendo otra cosa que obviamente esté consumiendo mucho uso de memoria. Lo que realmente debería hacer es intentar descubrir por qué su script utiliza tanta memoria e intentar solucionarlo. Una forma de determinar cuánta memoria está usando su script PHP es usar la función PHP Memory_get_usage(). Simplemente repítelo en cualquier punto de tu script para descubrir dónde está aumentando tu uso de memoria:

eco memoria_get_usage();

Si recibe este mensaje de error en Drupal o Joomla, el probable culpable es un nuevo módulo o paquete. Por ejemplo, en Drupal, se carga la página de administración/módulos cada módulo en su instalación de Drupal, lo que puede volverse complicado si un módulo personalizado tiene errores, está corrupto o es pirateado. Intente desactivar los módulos uno por uno para identificar cuál está derribando a la fiesta. Además, algunos proveedores de alojamiento ignorarán sus intentos de modificar los límites de memoria de su código PHP, por lo que es posible que deba comunicarse con su soporte de alojamiento para que lo ayuden. A veces descubrí que necesito editar el archivo php.ini y, a veces, poner el código en el archivo .htaccess. De cualquier manera, con suerte, esta información aquí será suficiente para seguir tu camino.