Cómo resolver el error fatal de PHP: tamaño de memoria permitido de 8388608 bytes agotado

Uno de los errores más comunes y frustrantes que encuentran los codificadores de PHP dice: "Error fatal: tamaño de memoria permitido de 8388608 bytes agotado..." seguido de algo como "(intentó asignar XXXX bytes) en /home/www/file.module en línea 12." Este error fatal de PHP ocurre porque, de forma predeterminada, PHP tiene un límite de uso de memoria de 8 MB para un script dado. Esto es algo bueno, ya que no desea que un script PHP malicioso bloquee su servidor. acaparando toda la memoria, pero a veces obtendrá un script PHP que normalmente supera el límite de 8 MB (decir, para importar o descargar). Para solucionar el mensaje de error "Error fatal: tamaño de memoria permitido de 8388608 bytes agotado...", simplemente inserte esta línea de código en su secuencia de comandos en la parte superior:

ini_set("memoria_limite","16M");

limite de memoria

Esto establecerá su límite de memoria en 16 MB, en lugar de 8 MB. Puede, y debe, jugar con este número para mantenerlo lo más bajo posible sin repetir este mensaje de error. Esto solo cambiará 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 edítela:

límite_memoria=16M

Error fatal: tamaño de memoria permitido de 134217728 agotado

Noté en mi propio PHP.ini que mi valor predeterminado es mucho más alto en 128M. Entonces, si alguna vez recibo este mensaje de error, diría "Error fatal: se agotó el tamaño de memoria permitido de 134217728 bytes..." y obviamente sería un problema mucho mayor. Pero tiene la misma solución que "Error fatal: tamaño de memoria permitido de 8388608 bytes agotado..." o "Error fatal: tamaño de memoria permitido de 16777216 bytes agotado..." u otro. Aparentemente, el valor predeterminado para memory_limit se incrementó de 8M a 16M en PHP 5.2.0 y ahora es de 128M para PHP 5.3.0, lo que explicaría por qué es posible que no reciba este mensaje de error.

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

límite_memoria=-1

Esto generalmente no es una buena idea, sin embargo, por razones obvias.

Nota: También puede usar la línea memory_limit en su página .htaccess.

Ahora recuerde, esto es solo una solución. Realmente, su script PHP debería no exceda los 8 MB, a menos que esté descargando archivos o haciendo otra cosa que obviamente usa mucha memoria. Lo que realmente debería hacer es tratar de averiguar por qué su secuencia de comandos usa tanta memoria y tratar de solucionarlo. Una forma de determinar cuánta memoria está utilizando su secuencia de comandos PHP es utilizar la función PHP memory_get_usage(). Simplemente repítalo en cualquier punto de su secuencia de comandos para averiguar dónde está aumentando su uso de memoria:

echo memory_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 todos módulo en su instalación de Drupal, lo que puede complicarse si un módulo personalizado tiene errores, está corrupto o pirateado. Intente deshabilitar las modificaciones una por una para identificar cuál está derribando la fiesta. Además, algunos hosts ignorarán sus intentos de cambiar los límites de memoria para su código PHP, por lo que es posible que deba ponerse en contacto con el soporte de alojamiento para obtener ayuda. Algunas veces encontré que necesitaba modificar el archivo php.ini y algunas veces poner el código en el archivo .htaccess. De cualquier manera, ¡espero que esta información sea suficiente para llevarlo por el camino correcto!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Subir