Slik løser du PHP dødelig feil: Tillatt minnestørrelse på 8388608 byte er oppbrukt

En av de vanligste og frustrerende feilenemøtt av PHP-kodere lyder: "Dødelig feil: Tillatt minnestørrelse på 8388608 bytes utmattet ..." etterfulgt av noe sånt som "(prøvd å tildele XXXX byte) i /home/www/file.module på linje 12." Denne fatale PHP-feilen beskjærer opp fordi PHP som standard har en minnebruksgrense på 8 MB for et gitt skript. Dette er en god ting, faktisk, fordi du ikke vil at et useriøst PHP-skript skal få serveren din ned ved å hylle alt minnet. Men av og til har du et PHP-skript som normalt overskrider 8 MB-grensen (si for import eller opplasting). For å løse feilen "Dødelig feil: Tillatt minnestørrelse på 8388608 byte utmattet ...", kan du ganske enkelt sette inn denne linjen med kode i skriptet øverst:

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

memory_limit

Dette vil sette minnebegrensningen til 16 MB, snarereenn 8 MB. Du kan og bør fikle med dette nummeret slik at det er så lavt som mulig uten å gjenta den feilmeldingen. Dette vil bare endre minnegrensen for den aktuelle PHP-filen.

Alternativt kan du endre php.ini-filen for å øke minnegrensen. Dette vil påvirke alle skript på serveren din. Bare åpne php.ini og finn linjen som leser "memory_limit" og endre den:

memory_limit = 16M

Dødelig feil: Tillatt minnestørrelse på 134217728 er utmattet

Jeg har lagt merke til det i min egen PHP.ini-fil som min standard er mye høyere på 128M. Så hvis jeg noen gang skulle motta denne feilmeldingen, vil den lese: "Dødelig feil: Tillatt minnestørrelse på 134217728 bytes utmattet ..." og åpenbart være et mye større problem. Men det har den samme løsningen som "Dødelig feil: Tillatt minnestørrelse på 8388608 byte oppbrukt ..." eller "Dødelig feil: Tillatt minnestørrelse på 16777216 byte utmattet ..." eller hva som helst. Angivelig, minne_limit-standarden ble oppet fra 8M til 16M i PHP 5.2.0 og er nå 128M for PHP 5.3.0, noe som vil forklare hvorfor du kanskje ikke får denne feilmeldingen i det hele tatt.

Du kan også deaktivere minnegrensen ved å sette minne_grense til –1 i PHP.ini.

memory_limit = -1

Vanligvis er dette ikke en god idé.

Merk: Du kan også bruke memory_limit-linjen på .htaccess-siden din.

Husk at dette bare er en løsning. Virkelig, skal PHP-skriptet ditt ikke være over 8 MB, med mindre du laster opp filer ellergjør noe annet som åpenbart tar mye minnebruk. Det du virkelig burde gjøre er å prøve å finne ut hvorfor skriptet bruker så mye minne og forsøke å fikse det. En måte å finne ut hvor mye minne PHP-skriptet bruker, er å bruke memory_get_usage () PHP-funksjonen. Bare gjengi det på et hvilket som helst tidspunkt i skriptet ditt for å finne ut hvor minnebruken spiker:

ekko memory_get_usage ();

Hvis du får denne feilmeldingen i Drupal eller Joomla, er den sannsynlige skyldige en ny modul eller pakke. For eksempel, i Drupal, lastes admin / moduler-siden hver modulen i Drupal-installasjonen, som kan fåhårete hvis en tilpasset modul er buggy, korrupt eller hacket. Prøv å deaktivere moduler én etter én for å identifisere hvilken som fører partiet ned. Noen hostingleverandører vil også ignorere forsøkene dine på å endre minnegrensene for PHP-koden din, slik at du kanskje må kontakte hostingstøtten din for å hjelpe deg. Noen ganger har jeg funnet at jeg trenger å redigere php.ini-filen og noen ganger sette koden i .htaccess-filen. Uansett, forhåpentligvis er denne informasjonen her nok til å komme deg på vei!

0

Lignende artikler

Legg igjen en kommentar