Sådan løses PHP Fatal fejl: Tilladt hukommelsesstørrelse på 8388608 byte udtømt

En af de mest almindelige og frustrerende fejl, der opstår i PHP-kodere, lyder: "Fejlagtig fejl: Tilladt hukommelsesstørrelse på 8388608 bytes udtømt ..." efterfulgt af noget som "(forsøgt at allokere XXXX bytes) i /home/www/file.module on line 12. "Denne dødelige PHP-fejl opdrættes, fordi PHP som standard har en hukommelsesbrudgrænse på 8 MB for et givet script. Dette er en god ting, faktisk fordi du ikke vil have et rogue PHP script til at bringe din server ned ved at hogge hele hukommelsen. Men lejlighedsvis har du et PHP-script, som normalt overskrider grænsen på 8 MB ( f.eks. Til import eller upload ). For at løse problemet "Fejlsikret fejl: Tilladt hukommelsesstørrelse på 8388608 bytes udmattet ..." fejlmeddelelse, skal du blot indsætte denne linie kode i dit script øverst:

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

Dette indstiller din hukommelsesgrænse til 16 MB, i stedet for 8 MB. Du kan og bør fyre med dette nummer, så det er så lavt som muligt uden at gentage denne fejlmeddelelse. Dette ændrer kun hukommelsesgrænsen for den pågældende PHP-fil.

Alternativt kan du ændre din php.ini-fil til hukommelsesgrænsen. Dette vil påvirke alle scripts på din server. Du skal blot åbne php.ini og finde den linje, der læser "memory_limit" og ændre den:

memory_limit = 16 M

Jeg har bemærket i min egen PHP.ini-fil, at min standard er meget højere ved 128M. Så hvis jeg nogensinde skulle modtage denne fejlmeddelelse, ville det læse: "Fatal error: Tilladt hukommelsesstørrelse på 134217728 bytes udtømt ..." og selvfølgelig et meget større problem. Men det har samme løsning som "Fatal error: Tilladt hukommelsesstørrelse på 8388608 bytes udtømt ..." eller "Fatal fejl: Tilladt hukommelsesstørrelse på 16777216 bytes udtømt ..." eller hvad som helst. Tilsyneladende var memory_limit-standarden oped fra 8M til 16M i PHP 5.2.0 og er nu 128M for PHP 5.3.0, hvilket ville forklare, hvorfor du muligvis ikke får denne fejlmeddelelse overhovedet.

Du kan også deaktivere hukommelsesgrænsen ved at indstille memory_limit til -1 i PHP.ini.

memory_limit = -1

Dette er normalt ikke en god ide, men af ​​indlysende grunde.

Bemærk: Du kan også bruge linjen memory_limit på din .htaccess-side.

Husk nu, dette er kun en løsning. Faktisk skal dit PHP script ikke overstige 8 MB, medmindre du uploader filer eller gør noget andet, der helt klart tager højde for hukommelsesbrugen. Hvad du virkelig skal gøre, forsøger at finde ud af, hvorfor dit script bruger så meget hukommelse og forsøger at rette op på det. En måde at finde ud af, hvor meget hukommelse dit PHP script bruger, er at bruge memory_get_usage () PHP-funktionen. Du skal blot gentage det på et hvilket som helst tidspunkt i dit script for at finde ud af, hvor din hukommelsesforbrug er spiking:

ekko memory_get_usage ();

Hvis du får denne fejlmeddelelse i Drupal eller Joomla, er den sandsynlige synder et nyt modul eller en pakke. For eksempel i Drupal indlæser admin / modul siden hvert modul i din Drupal installation, som kan blive håret, hvis et brugerdefineret modul er buggy, korrupt eller hacket. Prøv at deaktivere moduler en efter en for at identificere, hvilket fanger partiet ned. Derudover ignorerer nogle hostingudbydere dine forsøg på at ændre hukommelsesgrænserne for din PHP-kode, så du skal muligvis kontakte din hosting-support for at hjælpe dig. Jeg har fundet nogle gange, jeg har brug for at redigere php.ini filen og undertiden sætte koden i .htaccess filen. Uanset hvad, forhåbentlig er denne info her nok til at få dig på vej!