Página principal » Cómo » Cómo resolver un error fatal en PHP El tamaño de memoria permitida de 8388608 bytes se agotó

    Cómo resolver un error fatal en PHP El tamaño de memoria permitida de 8388608 bytes se agotó

    Uno de los errores más comunes y frustrantes encontrados por los codificadores de PHP dice: "Error fatal: Tamaño de memoria permitido de 8388608 bytes agotado ..." seguido de algo como "(se intentó asignar XXXX bytes) en /home/www/file.module en línea 12. ”Este error de PHP fatal surge porque, de manera predeterminada, PHP tiene un límite de uso de memoria de 8 MB para cualquier script dado. Esto es algo bueno, en realidad, porque no desea que una secuencia de comandos PHP maliciosa haga caer su servidor al acaparar toda la memoria. Pero ocasionalmente, tendrá un script PHP que normalmente excede el límite de 8 MB (Por ejemplo, para importar o subir.). Para solucionar el mensaje de error "Error grave: tamaño de memoria permitido de 8388608 bytes agotado ...", simplemente inserte esta línea de código en su script en la parte superior:

    ini_set ("memory_limit", "16M“);

    Esto establecerá su límite de memoria a 16 MB, en lugar de 8 MB. Puede, y debe, jugar con este número para que sea lo más bajo posible sin repetir ese mensaje de error. Esto solo alterará el límite de memoria para ese archivo PHP en particular.

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

    memory_limit = 16M

    He notado en mi propio archivo PHP.ini que mi valor predeterminado es mucho mayor en 128M. Por lo tanto, si alguna vez recibiera este mensaje de error, se leería: "Error fatal: el tamaño de memoria permitido de 134217728 bytes se agotó ..." 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 grave: tamaño de memoria permitido de 16777216 bytes agotados ..." o lo que sea. Aparentemente, el valor predeterminado de memory_limit se incrementó de 8M a 16M en PHP 5.2.0 y ahora es 128M para PHP 5.3.0, lo que explicaría por qué no puede recibir este mensaje de error..

    También puede desactivar el límite de memoria configurando memory_limit a -1 en PHP.ini.

    memory_limit = -1

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

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

    Ahora, recuerde, esto es sólo una solución. Realmente, tu script PHP debería no superará los 8 MB, a menos que esté cargando archivos o haciendo otra cosa que obviamente está consumiendo mucha memoria. Lo que realmente debería estar haciendo es tratar de averiguar por qué su script está usando tanta memoria y tratar de solucionarlo. Una forma de averiguar cuánta memoria está usando su script PHP es usar la función memory_get_usage () PHP. Simplemente repítalo en cualquier punto de su script para descubrir dónde está aumentando su uso de memoria:

    echo memory_get_usage ();

    Si recibe este mensaje de error en Drupal o Joomla, el culpable probable es un nuevo módulo o paquete. Por ejemplo, en Drupal, la página de admin / modules se carga cada Módulo en su instalación de Drupal, que puede volverse peludo si un módulo personalizado tiene errores, está dañado o es pirateado. Intente deshabilitar los módulos uno por uno para identificar cuál es la causa de la caída. Además, algunos proveedores de hosting ignorarán sus intentos de modificar los límites de memoria para su código PHP, por lo que es posible que deba ponerse en contacto con el servicio de asistencia de hosting para que lo ayude. A veces he encontrado que necesito editar el archivo php.ini y otras veces poner el código en el archivo .htaccess. De cualquier manera, espero que esta información aquí sea suficiente para ponerlo en camino!