Kuinka ratkaista PHP-kuolemaan johtava virhe: Sallitun muistin koko 8388608 tavua on käytetty loppuun

Yksi yleisimmistä ja turhauttavista virheistäPHP-kooderien kohtaama kuuluu: ”Fataalivirhe: Sallitun muistin koko 8388608 tavua on käytetty loppuun”, jota seuraa jotain ”(yritettiin allokoida XXXX tavua) /home/www/file.module rivillä 12.” Tämä kohtalokas PHP-virhe aiheuttaa ylöspäin, koska PHP: n muistin käyttörajoitus on oletuksena 8 Mt kullekin skriptille. Tämä on itse asiassa hyvä asia, koska et halua, että vilpillinen PHP-skripti tuhoaisi palvelimesi kokoamalla koko muistin. Mutta joskus sinulla on PHP-skripti, joka yleensä ylittää 8 Mt: n rajan (esimerkiksi tuontia tai lähettämistä varten). Voit kiertää "Fatal -virhe: Sallitun muistin koon 8388608 tavua käytetty ..." -virhesanoman kirjoittamalla tämä koodirivi komentosarjan yläosaan:

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

memory_limit

Tämä asettaa pikemminkin muistirajaksi 16 Mtkuin 8 Mt. Voit ja pidä viilata tällä numerolla niin, että se on mahdollisimman pieni toistamatta virheviestiä. Tämä muuttaa vain kyseisen PHP-tiedoston muistirajaa.

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

memory_limit = 16M

Fataali virhe: Sallitun muistin koko 134217728 on käytetty

Olen huomannut omassa PHP: ssä.ini-tiedosto, jonka oletusarvo on paljon suurempi 128 miljoonalla. Joten, jos saisin tämän virheilmoituksen, se lukee: "Fataali virhe: Sallitun muistin koko 134217728 tavua on käytetty loppuun" ja on tietenkin paljon suurempi ongelma. Mutta sillä on sama kiertotapa kuin "Fatal error: Sallitun muistin koko 8388608 tavua on käytetty loppuun" tai "Fatal error: Sallitun muistin koko 16777216 tavua on käytetty loppuun" tai mikä tahansa muu. Ilmeisesti muistin_raja-oletus on ylitetty 8 miljoonasta 16 miljoonaan PHP 5.2.0: ssa ja on nyt 128 miljoonaa PHP 5.3.0: ssa, mikä selittää miksi et ehkä saa tätä virheilmoitusta ollenkaan.

Voit myös poistaa muistitilan käytöstä asettamalla muistirajaksi –1 PHP.ini: ssä.

memory_limit = -1

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

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

Muista, tämä on vain kiertotapa. Todellakin, PHP-skriptisi pitäisi ei oltava yli 8 Mt, ellet lataa tiedostoja taitekemällä jotain muuta, joka vie selvästi paljon muistin käyttöä. Sinun pitäisi todella yrittää selvittää, miksi skriptisi käyttää niin paljon muistia, ja yrittää korjata se. Yksi tapa selvittää, kuinka paljon muistia PHP-skripti käyttää, on käyttää memory_get_usage () PHP-toimintoa. Kaikua se missä tahansa komentosarjan vaiheessa saadaksesi selville, missä muistin käyttö on kasvussa:

echo memory_get_usage ();

Jos saat tämän virhesanoman Drupalissa tai Joomlassa, todennäköinen syyllinen on uusi moduuli tai paketti. Esimerkiksi Drupalissa admin / moduulit-sivu latautuu joka moduuli Drupal-asennuksessa, joka voi saadakarvainen, jos mukautettu moduuli on viallinen, vioittunut tai hakkeroitu. Yritä poistaa moduulit käytöstä yksitellen tunnistaaksesi mikä johtaa puolueen. Jotkin isännöintipalveluntarjoajat eivät myöskään huomioi yrityksiäsi muuttaa PHP-koodisi muistirajoja, joten sinun on ehkä otettava yhteyttä isäntätukeen auttaaksesi sinua. Olen toisinaan joutunut muokkaamaan php.ini-tiedostoa ja joskus laittamaan koodin .htaccess-tiedostoon. Joko niin, toivottavasti tämä tieto täällä riittää saat sinut matkallesi!

0

Samankaltaisia ​​artikkeleita

Jätä kommentti