Startseite » Wie man » So lösen Sie schwerwiegenden PHP-Fehler Die zulässige Speichergröße von 8388608 Byte ist erschöpft

    So lösen Sie schwerwiegenden PHP-Fehler Die zulässige Speichergröße von 8388608 Byte ist erschöpft

    Einer der häufigsten und frustrierendsten Fehler, der von PHP-Codierern festgestellt wird, lautet: "Schwerwiegender Fehler: zulässige Speichergröße von 8388608 Byte erschöpft ..." gefolgt von etwas wie "(versucht, XXXX-Bytes zuzuordnen) in /home/www/file.module online 12. ”Dieser schwerwiegende PHP-Fehler tritt auf, da PHP für jedes Skript standardmäßig eine maximale Speicherauslastung von 8 MB aufweist. Das ist wirklich eine gute Sache, weil Sie nicht wollen, dass ein bösartiges PHP-Skript Ihren Server herunterfährt, indem es den gesamten Speicher belegt. Gelegentlich haben Sie jedoch ein PHP-Skript, das normalerweise die Grenze von 8 MB überschreitet (zum Importieren oder Hochladen). Um die Fehlermeldung "Schwerwiegender Fehler: Erlaubte Speichergröße von 8388608 Byte erschöpft ..." zu umgehen, fügen Sie diese Codezeile oben in Ihr Skript ein:

    ini_set ("memory_limit")16M“);

    Dadurch wird Ihr Speicherlimit auf 16 MB anstatt auf 8 MB festgelegt. Sie können und sollten mit dieser Nummer arbeiten, damit sie so niedrig wie möglich ist, ohne die Fehlermeldung zu wiederholen. Dadurch wird nur die Speichergrenze für diese bestimmte PHP-Datei geändert.

    Alternativ können Sie Ihre php.ini-Datei ändern, um die Speichergrenze zu erhöhen. Dies wirkt sich auf alle Skripts auf Ihrem Server aus. Öffnen Sie einfach die php.ini und finden Sie die Zeile mit der Aufschrift "memory_limit". Ändern Sie sie:

    memory_limit = 16M

    Ich habe in meiner eigenen PHP.ini-Datei festgestellt, dass mein Standardwert bei 128M viel höher liegt. Wenn ich diese Fehlermeldung jemals erhalten würde, würde es lauten: "Schwerwiegender Fehler: Erlaubte Speichergröße von 134217728 Bytes erschöpft ..." und offensichtlich ein viel größeres Problem. Es gibt jedoch die gleiche Problemumgehung wie "Schwerwiegender Fehler: Erlaubte Speichergröße von 8388608 Byte ist erschöpft ..." oder "Schwerwiegender Fehler: Zulässige Speichergröße von 16777216 Byte ist erschöpft ..." oder was auch immer. Anscheinend wurde der memory_limit-Standard in PHP 5.2.0 von 8M auf 16M erhöht und beträgt jetzt 128M für PHP 5.3.0. Dies würde erklären, warum diese Fehlermeldung überhaupt nicht angezeigt wird.

    Sie können die Speicherbegrenzung auch deaktivieren, indem Sie memory_limit in PHP.ini auf -1 setzen.

    memory_limit = -1

    Aus offensichtlichen Gründen ist dies jedoch normalerweise keine gute Idee.

    Hinweis: Sie können auch die memory_limit -Zeile auf Ihrer .htaccess-Seite verwenden.

    Denken Sie daran, dies ist nur eine Problemumgehung. Wirklich sollte dein PHP-Skript nicht 8 MB überschreiten, es sei denn, Sie laden Dateien hoch oder tun etwas anderes, was offensichtlich viel Speicherplatz beansprucht. Was Sie eigentlich tun sollten, ist herauszufinden, warum Ihr Skript so viel Speicher verwendet, und versuchen, es zu beheben. Eine Möglichkeit, um herauszufinden, wie viel Speicher Ihr PHP-Skript verwendet, ist die Verwendung der memory_get_usage () - PHP-Funktion. Sie können es einfach an jedem Punkt Ihres Skripts wiederholen, um herauszufinden, wo sich der Speicherbedarf erhöht:

    echo memory_get_usage ();

    Wenn Sie diese Fehlermeldung in Drupal oder Joomla erhalten, ist der wahrscheinliche Schuldige ein neues Modul oder Paket. In Drupal wird beispielsweise die Seite admin / modules geladen jeden Modul in Ihrer Drupal-Installation, das hart werden kann, wenn ein benutzerdefiniertes Modul fehlerhaft, beschädigt oder gehackt ist. Deaktivieren Sie die Module nacheinander, um zu ermitteln, welche die Gruppe zum Absturz bringen. Einige Hosting-Anbieter ignorieren Ihre Versuche, die Speichergrenzen für Ihren PHP-Code zu ändern, sodass Sie möglicherweise Ihren Hosting-Support kontaktieren müssen, um Sie zu unterstützen. Ich habe herausgefunden, dass ich manchmal die php.ini-Datei bearbeiten und manchmal den Code in die .htaccess-Datei einfügen muss. Wie auch immer, hoffentlich reicht diese Info hier aus, um Sie auf den Weg zu bringen!