Jak vyřešit závažnou chybu PHP: Povolená velikost paměti 8388608 bytů je vyčerpaná

Jedna z nejčastějších a frustrujících chybsetkali se s PHP kodéry: "Závažná chyba: Povolená velikost paměti 8388608 bajtů vyčerpaná ..." následovaná něčím jako "(pokusil se přidělit XXXX bajtů) v /home/www/file.module na řádku 12." Tato fatální chyba oříznutí PHP nahoru, protože ve výchozím nastavení má PHP pro každý daný skript limit využití paměti 8 MB. To je vlastně dobrá věc, protože nechcete, aby vám nečestný skript PHP svrhl váš server tím, že ukryje veškerou paměť. Ale občas budete mít skript PHP, který normálně překračuje limit 8 MB (řekněme pro import nebo nahrávání). Chcete-li vyřešit chybovou zprávu „Závažná chyba: povolená velikost paměti 8388608 vyčerpaných bytů…“, jednoduše vložte tento řádek kódu do skriptu nahoře:

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

memory_limit

Tím nastavíte limit paměti na 16 MBnež 8 MB. S tímto číslem můžete a měli byste se ovládat tak, aby bylo co nejnižší, aniž byste opakovali tuto chybovou zprávu. Tím se změní pouze limit paměti pro daný konkrétní soubor PHP.

Případně můžete změnit soubor php.ini až na limit paměti. To ovlivní všechny skripty na vašem serveru. Jednoduše otevřete php.ini a najděte řádek, který čte „memory_limit“ a změňte jej:

memory_limit = 16M

Závažná chyba: vyčerpaná povolená velikost paměti 134217728

Všiml jsem si vlastního PHP.ini soubor, že moje výchozí je mnohem vyšší na 128M. Pokud bych tedy někdy měl obdržet tuto chybovou zprávu, přečetl by: „Závažná chyba: vyčerpaná velikost paměti 134217728 bajtů ...“ a zjevně to bude mnohem větší problém. Má však stejné řešení jako „Závažná chyba: vyčerpaná velikost paměti 8388608 bytů vyčerpána…“ nebo „Závažná chyba: vyčerpána velikost paměti 16777216 bytů…“ nebo cokoli jiného. Výchozí hodnota memory_limit byla zjevně v PHP 5.2.0 zvýšena z 8 na 16 M a nyní je 128 M pro PHP 5.3.0, což by vysvětlovalo, proč se tato chybová zpráva nemusí zobrazit vůbec.

Limit paměti můžete také deaktivovat nastavením memory_limit na –1 v PHP.ini.

memory_limit = -1

To však obvykle není z dobrých důvodů dobrý nápad.

Poznámka: Řádek memory_limit můžete také použít na své stránce .htaccess.

Teď si pamatujte, že toto je pouze řešení. Skutečně by váš skript PHP měl ne překročit 8 MB, pokud neodovzdáváte soubory nebodělat něco jiného, ​​co zjevně zabírá spoustu využití paměti. Opravdu byste se měli snažit zjistit, proč váš skript používá tolik paměti a pokusit se jej opravit. Jedním ze způsobů, jak zjistit, kolik paměti váš skript PHP používá, je použití funkce PHP memory_get_usage (). Jednoduše ji ozvěte kdykoli ve skriptu, abyste zjistili, kde využití vaší paměti narůstá:

echo memory_get_usage ();

Pokud se vám tato chybová zpráva zobrazuje v Drupalu nebo Joomle, pravděpodobným viníkem je nový modul nebo balíček. Například v Drupalu se načte stránka admin / moduly každý modul ve vaší instalaci Drupalu, který lze získatchlupatý, pokud je vlastní modul buggy, poškozený nebo hacknutý. Pokuste se zakázat moduly jeden po druhém a zjistěte, která strana snižuje. Někteří poskytovatelé hostingu budou ignorovat vaše pokusy změnit limity paměti pro váš kód PHP, takže možná budete muset kontaktovat podporu hostingu, aby vám pomohli. Zjistil jsem, že někdy potřebuji upravit soubor php.ini a někdy vložit kód do souboru .htaccess. Ať tak či onak, doufejme, že tato informace je dost, aby vás na vaší cestě!

0

Podobné články

Zanechat komentář