Hoe verhoog je het PHP-geheugen van je site?
De melding Allowed memory size of … bytes exhausted betekent dat één PHP-proces meer geheugen vroeg dan de limiet toelaat. U verhoogt die limiet in het controlepaneel van uw hosting, per site; bij WordPress kan daar een regel in wp-config.php bij komen. Kijk wel eerst welk bestand in de foutmelding staat. Komt de fout plots op, dan zit er meestal een plugin of een import achter en verbergt verhogen het probleem alleen.
Wat de foutmelding zegt
Voluit: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes), gevolgd door een bestandsnaam en een regelnummer.
- Het eerste getal is de huidige limiet in bytes. 134217728 bytes is 128 MB.
- Het tweede getal is wat PHP op dat ogenblik nog wilde bijnemen. Het zegt niets over het totale verbruik.
- Het bestand en de regel tonen waar het geheugen opraakte.
Op een live site ziet de bezoeker meestal enkel een witte pagina, een foutcode 500 of bij WordPress de melding over een kritieke fout. De echte melding staat dan in het foutenlog. Meer over die statuscodes leest u in wat de foutcodes 403, 404 en 500 betekenen.
Wanneer het speelt
Bij zware pagebuilders, grote imports, webshops met veel producten en het verwerken van grote foto's. Zelden bij een gewone bedrijfssite.
Waar u de limiet instelt
- In het controlepaneel. Bij WWW4 stelt u de PHP-geheugenlimiet per site in via het controlepaneel, dat u opent vanuit het klantenportaal. Hoe hoog u kunt gaan, verschilt per pakket. Dit is de betrouwbaarste weg.
- In wp-config.php, voor WordPress. Voeg boven de regel die zegt dat u moet stoppen met bewerken deze regel toe: define('WP_MEMORY_LIMIT', '256M'); WordPress vraagt uit zichzelf maar 40 MB voor de voorkant van de site, 64 MB bij een multisite, en 256 MB in het beheer. Staat de limiet van de server al hoger, dan verandert deze regel niets. Laat de hosting geen hogere waarde toe, dan ook niet.
- In een bestand .user.ini. Op hosting die dat toelaat, zet u in de hoofdmap van de site een bestand .user.ini met de regel memory_limit = 256M. PHP leest dat bestand standaard maar om de vijf minuten opnieuw in. Het centrale php.ini van de server kunt u op gedeelde hosting niet zelf aanpassen.
Een regel met php_value in het bestand .htaccess werkt enkel wanneer PHP als module van Apache draait. Anders geeft de hele site meteen een fout 500.
Controleren of de nieuwe waarde geldt
In WordPress kijkt u in het beheer bij de sitediagnose, op het tabblad met de info, onder het onderdeel server: daar staat de PHP-geheugenlimiet die echt van kracht is.
Waarom verhogen niet altijd de oplossing is
Een site die plots veel meer geheugen nodig heeft, heeft meestal een probleem in plaats van een tekort: een plugin die alles tegelijk inlaadt, een import die niet in delen werkt, een functie die zichzelf eindeloos blijft aanroepen. In dat laatste geval raakt elke limiet op, hoe hoog u ze ook zet. Verhogen verbergt het probleem.
De limiet geldt bovendien per PHP-proces, en elke bezoeker die tegelijk een pagina opvraagt, start een eigen proces.
Zo vindt u de oorzaak
- Lees het pad in de foutmelding. Staat daar wp-content/plugins gevolgd door een mapnaam, dan is dat de plugin waar het geheugen opraakte. Meestal is dat ook de schuldige, maar niet altijd: soms vult een andere plugin het geheugen.
- Bekijk het foutenlog in het controlepaneel. In WordPress zet u daarnaast in wp-config.php WP_DEBUG en WP_DEBUG_LOG op true en WP_DEBUG_DISPLAY op false. De fouten komen dan in debug.log in de map wp-content. Zet dat na het zoeken weer uit.
- Ga na wat er veranderde. Een update, een nieuwe plugin, een grote import, een nieuw thema. Test updates voortaan eerst; hoe dat gaat, leest u in WordPress-updates veilig uitvoeren.
- Schakel plugins één voor één uit tot de fout verdwijnt. Raakt u het beheer niet meer in, hernoem dan via FTP of het bestandsbeheer de map van de verdachte plugin.
- Meet het verbruik. De plugin Query Monitor toont per pagina hoeveel geheugen gebruikt werd.
- Verklein de taak. Importeer in kleinere delen.
De grens van uw pakket
De maximale geheugenlimiet hoort bij uw hostingpakket. Het kleinste pakket is bedoeld voor een bedrijfssite of een blog; een webshop of een site met een zware pagebuilder vraagt een groter pakket. De pakketten staan op hostingprijzen. Loopt u ook daar structureel tegen het maximum aan, dan is een eigen server de volgende stap: lees wat een VPS is en wanneer u overstapt.
Veelgestelde vragen
Ik heb de limiet verhoogd, maar de fout blijft. Wat nu?
Kijk naar het eerste getal in de foutmelding. Is dat niet veranderd, dan wordt uw instelling niet toegepast: het bestand staat in de verkeerde map of uw pakket laat geen hogere waarde toe. Is het getal wel gestegen en raakt het geheugen toch op, dan zoekt u een lek en geen tekort.
Hoeveel PHP-geheugen heeft WordPress nodig?
WordPress zelf heeft weinig nodig. De plugins en het thema bepalen het verbruik; meet dus uw eigen site in plaats van op een vuistregel te vertrouwen.
Is de geheugenlimiet hetzelfde als de uploadgrootte?
Nee. Uploads hangen af van upload_max_filesize en post_max_size. Een mislukte upload lost u niet op met meer geheugen.
Lukt het niet?
Bezorg ons via contact de domeinnaam, de volledige foutmelding en het tijdstip. Wij kijken mee in het log van de server.
Loopt het bij jou anders dan hierboven beschreven, of blijf je vastzitten? Neem contact op met je domeinnaam of klantnummer bij de hand, dan kijken we mee.
Contacteer support