Skip to content

Kuinka ratkaista PHP: n vakava virhe: Sallittu 8388608 tavun muistikoko on käytetty

5 de kesäkuu de 2021
programing code Website Admin IT Featured

Yksi yleisimmistä ja turhauttavimmista virheistä, joita PHP-koodaajat kohtaavat, kuuluu seuraavasti: ”Kohtalokas virhe: Sallittu muistikoko 8388608 tavua on käytetty …”, jota seuraa jotain ”(yritti allokoida XXXX tavua) /home/www/file.module on line 12. ” Tämä kohtalokas PHP-virhe ilmenee, koska oletusarvoisesti PHP: n muistin käyttöraja on 8 Mt mille tahansa skriptille. Tämä on itse asiassa hyvä asia, koska et halua, että roistova PHP-komentosarja kaataa palvelimesi työntämällä kaiken muistin. Mutta toisinaan sinulla on PHP-komentosarja, joka yleensä ylittää 8 Mt: n rajan (esimerkiksi tuontia tai lataamista varten). Voit kiertää ”Fatal error: Sallittu muistikoko 8388608 tavua käytetty loppuun …” -virhesanoman yksinkertaisesti lisäämällä tämä koodirivi yläreunan komentosarjaan:

ini_set (”muistin_raja”, ”16M“);

Tämä asettaa muistirajaksi 16 Mt eikä 8 Mt. Voit ja sinun pitäisi hämätä tätä numeroa niin, että se on mahdollisimman pieni toistamatta kyseistä virhesanomaa. Tämä muuttaa vain tietyn PHP-tiedoston muistirajaa.

Vaihtoehtoisesti voit muuttaa php.ini-tiedostosi muistirajan yläpuolelle. Tämä vaikuttaa kaikkiin palvelimen skripteihin. Avaa vain php.ini ja etsi rivi, joka lukee ”memory_limit”, ja muuta sitä:

muisti_raja = 16M

Olen huomannut omassa PHP.ini-tiedostossani, että oletusarvoni on paljon suurempi 128M: ssä. Joten jos saisin koskaan tämän virhesanoman, se lukisi: ”Kohtalokas virhe: 134217728 tavun sallittu muistikoko on käytetty loppuun …” ja on tietysti paljon suurempi ongelma. Mutta sillä on sama kiertotapa kuin ”Kohtalokas virhe: 8388608 tavun sallittu muistikoko on käytetty…” tai ”Vakava virhe: 16777216 tavun sallittu muistikoko on käytetty…” tai mikä tahansa muu. Ilmeisesti memory_limit-oletus on korotettu 8M: stä 16M: iin PHP 5.2.0: ssa ja on nyt 128M PHP 5.3.0: lle, mikä selittäisi, miksi et välttämättä saa tätä virheilmoitusta ollenkaan.

Voit myös poistaa muistirajan käytöstä asettamalla muistin raja-arvoksi –1 PHP.ini-tiedostossa.

muisti_raja = -1

Tämä ei kuitenkaan yleensä ole hyvä idea ilmeisistä syistä.

Huomaa: Voit käyttää .htaccess -sivusi myös memory_limit-riviä.

Muista nyt, että tämä on vain kiertotapa. Todellakin, PHP-skriptisi pitäisi ei olla yli 8 Mt, ellei lataamalla tiedostoja tai tekemällä jotain muuta, mikä vie ilmeisesti paljon muistia. Mitä sinun pitäisi todella tehdä, on yrittää selvittää, miksi komentosarjasi käyttää niin paljon muistia, ja yrittää korjata se. Yksi tapa selvittää, kuinka paljon muistia PHP-komentosarjasi käyttää, on käyttää memory_get_usage () PHP-toimintoa. Toista se vain komentosarjan missä tahansa kohdassa saadaksesi selville, missä muistisi käyttö on lisääntynyt:

kaikumuistin_käyttö_käyttö ();

Jos saat tämän virheilmoituksen Drupalissa tai Joomlassa, todennäköinen syyllinen on uusi moduuli tai paketti. Esimerkiksi Drupalissa järjestelmänvalvoja / moduulit -sivu latautuu joka Drupal-asennuksen moduuli, joka voi saada karvaisen, jos mukautettu moduuli on viallinen, vioittunut tai hakkeroitu. Yritä poistaa moduulit käytöstä yksi kerrallaan tunnistaaksesi, mikä tuo osapuolen alas. Jotkut isännöintipalvelujen tarjoajat jättävät myös huomiotta yrityksesi muuttaa PHP-koodisi muistirajoja, joten sinun on ehkä otettava yhteyttä isäntätukeen auttamaan sinua. Olen joskus huomannut, että minun täytyy muokata php.ini-tiedostoa ja joskus laittaa koodi .htaccess-tiedostoon. Joko niin, toivottavasti tämä tieto täällä riittää saamaan sinut matkallesi!