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

Viena iš labiausiai paplitusių ir žlugdančių klaidų, su kuriais susidūrė PHP programuotojai, rašoma: „Mirtina klaida: išnaudotas leistinas atminties dydis - 8388608 baitai ...“, po kurio eina kažkas panašaus į „(bandyta skirti XXXX baitus) / home / www / failas.modulas 12 eilutėje“. Ši mirtina PHP klaida iki, nes pagal nutylėjimą PHP bet kurio scenarijaus atminties apribojimas yra 8 MB. Tiesą sakant, tai yra geras dalykas, nes nenorite, kad nesąžiningi PHP scenarijai sumažintų jūsų serverį, užrašant visą atmintį. Bet kartais turėsite PHP scenarijų, kuris paprastai viršija 8 MB ribą (tarkime, importuoti ar įkelti). Norėdami išspręsti klaidos pranešimą „Mirtina klaida: leistinas atminties dydis - 8388608 baitai išnaudoti ...“, tiesiog įdėkite šią kodo eilutę į scenarijų viršuje:

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

atminties_limitas

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

Fatalinė klaida: 134217728 leistinas atminties dydis išnaudotas

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!

0

Panašūs straipsniai

Palikite komentarą