Hjemmeside » Hvordan » Hvordan løse PHP Fatal feil Tillatt minnestørrelse på 8388608 byte utmattet

    Hvordan løse PHP Fatal feil Tillatt minnestørrelse på 8388608 byte utmattet

    En av de vanligste og mest frustrerende feilene som PHP-kodere opplever, lyder: "Fatal error: Tillatt minnestørrelse på 8388608 byte utmattet ..." etterfulgt av noe som "(prøvde å tildele XXXX bytes) i /home/www/file.module on line 12. "Denne dødelige PHP-feilen avhenger fordi PHP som standard har en begrensning for minnebruk på 8 MB for et gitt skript. Dette er en god ting, faktisk fordi du ikke vil ha et falskt PHP-skript for å få ned serveren din ved å hogge alt minnet. Men noen ganger vil du ha et PHP-skript som vanligvis overskrider 8 MB grensen (si, for import eller opplasting). For å løse feilmeldingen "Feil feil: Tillatt minnestørrelse på 8388608 bytes utmattet ...", legg inn denne linjen med kode i skriptet ditt øverst:

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

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

    Alternativt kan du endre php.ini-filen din til hukommelsesgrensen. 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

    Jeg har lagt merke til i min egen PHP.ini-fil at min standard er mye høyere ved 128M. Så hvis jeg noen gang skulle motta denne feilmeldingen, ville den lese: "Fatal error: Tillatt minnestørrelse på 134217728 bytes utmattet ..." og åpenbart være et mye større problem. Men det har samme løsning som "Feil feil: Tillatt minnestørrelse på 8388608 byte utmattet ..." eller "Feil feil: Tillatt minnestørrelse på 16777216 bytes utmattet ..." eller hva som helst. Tilsynelatende var memory_limit-standarden opped fra 8M til 16M i PHP 5.2.0 og er nå 128M for PHP 5.3.0, som ville forklare hvorfor du kanskje ikke får denne feilmeldingen i det hele tatt.

    Du kan også deaktivere minnegrensen ved å sette memory_limit til -1 i PHP.ini.

    memory_limit = -1

    Dette er vanligvis ikke en god ide, men av åpenbare grunner.

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

    Nå, husk, dette er bare en løsning. Egentlig, PHP-scriptet ditt burde ikke være over 8 MB, med mindre du laster opp filer eller gjør noe annet som åpenbart tar opp mye minnebruk. Det du virkelig bør gjøre, prøver å finne ut hvorfor skriptet ditt bruker så mye minne og forsøker å fikse det. En måte å finne ut hvor mye minne PHP-skriptet ditt bruker, er å bruke memory_get_usage () PHP-funksjonen. Bare ekko det når som helst i skriptet ditt for å finne ut hvor minnesbruken din spiking:

    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 / modul siden hver modul i Drupal-installasjonen, som kan bli hårete hvis en tilpasset modul er buggy, korrupte eller hacked. Prøv å deaktivere moduler en etter en for å identifisere som bringer festen ned. Noen hostingleverandører vil også ignorere forsøkene dine på å endre minnegrensene for PHP-koden din, slik at du kanskje trenger å kontakte din hosting-støtte for å hjelpe deg. Jeg har funnet noen ganger jeg må redigere php.ini-filen og noen ganger sette koden i .htaccess-filen. Uansett, forhåpentligvis er denne informasjonen nok til å få deg på vei!