Kaip išspręsti PHP mirtiną klaidą: Išnaudotas leistinas 8388608 baitų atminties dydis


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

Tai greičiau nustatys jūsų atminties limitą iki 16 MBnei 8 MB. Galite ir turėtumėte pamėgdžioti šį numerį, kad jis būtų kuo mažesnis, nekartojant to klaidos pranešimo. Tai pakeis tik to PHP failo atminties limitą.
Kitu atveju galite pakeisti savo php.ini failą taip, kad būtų daugiau atminties. Tai paveiks visus jūsų serverio scenarijus. Tiesiog atidarykite php.ini ir suraskite eilutę, kurioje rašoma „memory_limit“, ir pakeiskite ją:
atmintis_limitas = 16 mln

Aš pastebėjau savo PHP.ini failą, kad mano numatytasis yra daug didesnis 128 mln. Taigi, jei aš kada nors gaučiau šį klaidos pranešimą, jis būtų toks: „Fatalinė klaida: leistinas 134217728 baitų atminties dydis išnaudotas ...“ ir, be abejo, tai yra daug didesnė problema. Bet tai yra tas pats sprendimas, kaip ir „Fatal error: leistina 8388608 baitų atminties atmintis išeikvota ...“ arba „Fatal error: Failo leistina atmintis 16777216 baitų išnaudota…“ ar bet kas. Matyt, „memory_limit“ numatytoji reikšmė buvo padidinta nuo 8 mln. Iki 16 mln. PHP 5.2.0, o dabar yra 128 mln., Naudojant PHP 5.3.0. Tai paaiškintų, kodėl jūs galite negauti šio klaidos pranešimo.
Taip pat galite išjungti atminties limitą, nustatydami „memory_limit“ –1 PHP.ini.
atmintis_limitas = -1
Vis dėlto tai nėra gera idėja dėl suprantamų priežasčių.
Pastaba: „.htaccess“ puslapyje taip pat galite naudoti eilutę „memory_limit“.
Dabar atminkite, kad tai tik išeitis. Tikrai turėtų būti jūsų PHP scenarijus ne viršyti 8 MB, nebent įkeliate failus ardaryti ką nors kita, kas, be abejo, reikalauja daug atminties. Tai, ką tikrai turėtumėte daryti, yra bandymas išsiaiškinti, kodėl scenarijus naudoja tiek daug atminties, ir bandyti ją ištaisyti. Vienas būdas išsiaiškinti, kiek atminties naudoja jūsų PHP scenarijus, yra naudoti „memory_get_usage ()“ PHP funkciją. Tiesiog atkurkite tai bet kurioje scenarijaus vietoje ir sužinokite, kur kaupiasi jūsų atmintis:
echo memory_get_usage ();
Jei gausite šį klaidos pranešimą „Drupal“ ar „Joomla“, greičiausiai kaltininkas yra naujas modulis ar paketas. Pavyzdžiui, „Drupal“ sistemoje įkeliamas „admin“ / modulių puslapis kiekviena modulis jūsų „Drupal“ diegime, kurį galite gautiplaukuotas, jei pasirinktinis modulis yra klaidingas, sugadintas ar nulaužtas. Pabandykite išjungti modulius po vieną, kad nustatytumėte, kas mažina vakarėlį. Be to, kai kurie prieglobos paslaugų teikėjai nepaisys jūsų bandymų pakeisti jūsų PHP kodo atminties apribojimus, todėl jums gali tekti kreiptis į savo prieglobos palaikymą. Kartais radau, kad turiu redaguoti php.ini failą, o kartais ir įdėti kodą į .htaccess failą. Bet kokiu atveju, tikiuosi, šios informacijos čia pakanka, kad jus pakeliui!
Palikite komentarą