PHP oplossen Fatale fout: toegestane geheugengrootte van 8388608 bytes uitgeput

Een van de meest voorkomende en frustrerende fouten die PHP-coders tegenkomen, luidt: "Fatale fout: toegestane geheugengrootte van 8388608 bytes uitgeput ..." gevolgd door iets als "(geprobeerd XXXX-bytes toe te wijzen) in /home/www/file.module online 12. "Deze fatale PHP-fout doet zich voor omdat PHP standaard een geheugengebruikslimiet van 8 MB heeft voor elk script. Dit is eigenlijk een goede zaak, omdat je niet wilt dat een bedrieglijk PHP-script je server naar beneden haalt door al het geheugen te vernietigen. Maar af en toe heb je een PHP-script dat normaal de limiet van 8 MB overschrijdt ( bijvoorbeeld voor importeren of uploaden ). Om de "Fatale fout: toegestane geheugengrootte van 8388608 bytes uitgeput ..." foutbericht te omzeilen, voegt u deze regel code toe aan uw script bovenaan:

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

Hiermee wordt uw geheugenlimiet ingesteld op 16 MB, in plaats van 8 MB. Je kunt, en zou, moeten knutselen met dit nummer zodat het zo laag mogelijk is zonder dat foutbericht te herhalen. Dit zal alleen de geheugenlimiet voor dat specifieke PHP-bestand veranderen.

Als alternatief kunt u uw php.ini-bestand wijzigen om de geheugenlimiet te verhogen. Dit is van invloed op alle scripts op uw server. Open gewoon php.ini en zoek de regel met "memory_limit" en verander deze:

memory_limit = 16M

Ik heb gemerkt in mijn eigen PHP.ini-bestand dat mijn standaard veel hoger is op 128M. Dus, als ik ooit deze foutmelding zou ontvangen, zou het luiden: "Fatale fout: toegestane geheugengrootte van 134217728 bytes uitgeput ..." en uiteraard een veel groter probleem. Maar het heeft dezelfde methode als "Fatale fout: toegestane geheugengrootte van 8388608 bytes uitgeput ..." of "Fatale fout: toegestane geheugengrootte van 16777216 bytes uitgeput ..." of wat dan ook. Blijkbaar was de memory_limit standaard verhoogd van 8M naar 16M in PHP 5.2.0 en is nu 128M voor PHP 5.3.0, wat zou verklaren waarom je deze foutmelding helemaal niet krijgt.

U kunt de geheugenlimiet ook uitschakelen door memory_limit op -1 te zetten in PHP.ini.

memory_limit = -1

Dit is echter meestal geen goed idee om voor de hand liggende redenen.

Opmerking: u kunt de regel memory_limit ook gebruiken op uw .htaccess-pagina.

Onthoud goed, dit is slechts een tijdelijke oplossing. Echt, je PHP-script mag niet groter zijn dan 8 MB, tenzij je bestanden uploadt of iets anders doet dat kennelijk veel geheugen gebruikt. Wat je echt zou moeten doen is proberen uit te zoeken waarom je script zoveel geheugen gebruikt en proberen het te repareren. Een manier om erachter te komen hoeveel geheugen je PHP-script gebruikt, is door de memory_get_usage () PHP-functie te gebruiken. U kunt het eenvoudig op elk punt in uw script herhalen om uit te zoeken waar uw geheugengebruik sterk is:

echo memory_get_usage ();

Als u deze foutmelding krijgt in Drupal of Joomla, is de waarschijnlijke dader een nieuwe module of pakket. In Drupal laadt bijvoorbeeld de pagina admin / modules elke module in uw Drupal-installatie, die harig kan worden als een aangepaste module buggy, corrupt of gehackt is. Probeer modules een voor een uit te schakelen om te achterhalen welke het feest naar beneden brengt. Ook zullen sommige hostingproviders uw pogingen om de geheugenlimieten voor uw PHP-code te wijzigen negeren, dus u moet mogelijk contact opnemen met uw hostingondersteuning om u te helpen. Ik heb gemerkt dat ik soms het php.ini-bestand moet bewerken en de code soms in het .htaccess-bestand moet plaatsen. Hoe dan ook, hopelijk is deze info hier voldoende om je op weg te helpen!