A PHP megoldása Végzetes hiba: A megengedett 8388608 bájt memória mérete kimerült

Az egyik leggyakoribb és frusztráló hibaA PHP kódolókkal találta a következő szöveget: „Végzetes hiba: A megengedett memória mérete 8388608 bájt kimerült…”, amelyet valami hasonló követi: „(megpróbáltam kiosztani az XXXX bájtot) a /home/www/file.module modulban a 12. sorban.” Ez a végzetes PHP hiba fel, mert alapértelmezés szerint a PHP memóriahasználatának korlátozása 8 MB minden szkript számára. Valójában ez jó dolog, mert nem akarja, hogy egy gazember PHP-szkript az összes memória lemerítésével állítsa le a szervert. De alkalmanként olyan PHP-parancsfájlja lesz, amely általában meghaladja a 8 MB-os korlátot (mondjuk importálásra vagy feltöltésre). A „Végzetes hiba: A megengedett memória mérete 8388608 bájt kimerült…” hibaüzenet kiküszöböléséhez egyszerűen illessze be a kódsor ezt a szkriptet a tetejére:

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

memory_limit

Ezzel inkább a 16 MB-os memóriakorlátot fogja beállítanimint 8 MB. Lehet, és meg is hegedülhet ezzel a számmal, hogy a lehető legalacsonyabb legyen a hibaüzenet megismétlése nélkül. Ez csak az adott PHP fájl memóriakorlátját fogja megváltoztatni.

Alternatívaként megváltoztathatja a php.ini fájlt a memória korlátozásának eléréséig. Ez befolyásolja a kiszolgálón lévő összes szkriptet. Egyszerűen nyissa meg a php.ini-t, és keresse meg a „memory_limit” szöveget, és módosítsa azt:

memory_limit = 16M

Végzetes hiba: Az 134217728 megengedett memória mérete kimerült

Észrevettem a saját PHP-én.ini fájl, hogy az alapértelmezésem sokkal magasabb 128M-en. Tehát, ha valaha is kapnám ezt a hibaüzenetet, az a következő lenne: „Végzetes hiba: Az 134217728 bájt megengedett memória mérete kimerült…”, és nyilvánvalóan sokkal nagyobb probléma. Ugyanolyan megoldást kínál, mint a „Végzetes hiba: A megengedett memória mérete 8388608 byte kimerült…” vagy a „Végzetes hiba: Az engedélyezett memória mérete 16777216 bájtot kimerült…” vagy bármi más. Nyilvánvaló, hogy a memory_limit alapértelmezett értékét 8M-ről 16M-re emelték a PHP 5.2.0-ban, és most 128M-ot használnak a PHP 5.3.0-ra, ez magyarázza, hogy miért nem kapja meg ezt a hibaüzenetet.

A memóriakorlátot akkor is letilthatja, ha a memóriakorlátot –1 értékre állítja a PHP.ini fájlban.

memory_limit = -1

Ez általában nem jó ötlet, nyilvánvaló okokból.

Megjegyzés: Használhatja a memory_limit sort a .htaccess oldalon is.

Ne felejtsd el, hogy ez csak egy megoldás. Valójában a PHP szkriptnek kellene nem ha meghaladja a fájlokat vagyvalami mást csinál, ami nyilvánvalóan sok memóriafelhasználást igényel. Amit valójában tennie kell, megpróbálja kitalálni, hogy a szkript miért használ annyi memóriát, és megpróbálja kijavítani. Az egyik módja annak, hogy kiszámítsa, mennyi memóriát használja a PHP szkript, a memory_get_usage () PHP funkció használata. Egyszerűen visszhangozza azt a szkript bármely pontján, hogy megtudja, merre tart a memóriahasználat:

echo memory_get_usage ();

Ha Drupalban vagy Joomla-ban kapja ezt a hibaüzenetet, akkor a valószínű bűnös egy új modul vagy csomag. Például Drupalban az admin / modulok oldal betöltődik minden modul a Drupal telepítésében, amely megszerezhetőszőrös, ha az egyéni modul hibás, sérült vagy feltört. Próbálja meg kikapcsolni a modulokat egyenként, hogy meghatározzák, melyik eredményezi a felet. Ezenkívül néhány tárhelyszolgáltató figyelmen kívül hagyja a PHP-kód memóriakorlátjának módosítására tett kísérleteket, ezért előfordulhat, hogy segítségért fordulnia kell a tárhelyszolgálathoz. Néha azt tapasztaltam, hogy szerkesztenem kell a php.ini fájlt, és néha be kell töltenem a kódot a .htaccess fájlba. Akárhogy is, remélhetőleg ez az információ elegendő ahhoz, hogy útba léphessen!

0

Hasonló cikkek

Szólj hozzá