✦ Oplossingen · PHP-fouten

PHP Fatal error: Allowed memory size exhausted

Zie je 'Fatal error: Allowed memory size of … bytes exhausted'? Zo lees je de melding, verhoog je memory_limit op de juiste plek en vind je de code die te veel geheugen gebruikt.

Waarom gebeurt dit?

PHP geeft elk script een maximum aan werkgeheugen, ingesteld met memory_limit. Vraagt het script meer, dan stopt PHP met Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes). Het eerste getal is de limiet in bytes (134217728 bytes is 128 MB), het tweede wat er op dat moment nog bij moest.

Soms is de limiet gewoon te krap voor wat de site doet, bijvoorbeeld een grote import of een zware plugin. Vaak is er iets anders aan de hand: een lus die nooit stopt, een query die een hele tabel in één keer inleest, of een afbeelding van vele megapixels die wordt verkleind. Verhogen helpt dan maar even.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Lees de volledige foutmelding

    Achter de melding staat het bestand en het regelnummer, bijvoorbeeld in /wp-content/plugins/…/class-export.php on line 214. Dat wijst meestal direct naar de plugin, het thema of de functie die het geheugen opgebruikt. Staat de melding niet op het scherm, kijk dan in het PHP-foutenlog van je hosting.

  2. Controleer de huidige limiet

    Maak tijdelijk een bestand met phpinfo() of bekijk in je hostingpaneel de PHP-instellingen. Zoek naar memory_limit. Verwijder een phpinfo-bestand direct na gebruik; het toont gevoelige serverinformatie.

    <?php
    echo ini_get('memory_limit');
  3. Verhoog memory_limit op de juiste plek

    Waar je dit instelt hangt af van de hosting: in het PHP-menu van het hostingpaneel, in een eigen php.ini of .user.ini, of (bij Apache met mod_php) in .htaccess. Kies een redelijke waarde zoals 256M; 'onbeperkt' (-1) maskeert echte fouten.

    ; php.ini of .user.ini
    memory_limit = 256M
    
    # .htaccess (alleen bij Apache met mod_php)
    php_value memory_limit 256M
  4. Bij WordPress: WP_MEMORY_LIMIT

    WordPress heeft een eigen grens die het zelf probeert in te stellen. Zet in wp-config.php, boven de regel /* That's all, stop editing! */, de onderstaande regels. Dit werkt alleen als de server het toestaat; de PHP-limiet van de hosting blijft het plafond.

    define( 'WP_MEMORY_LIMIT', '256M' );
    define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // beheer-omgeving
  5. Zoek de echte oorzaak als het terugkomt

    Komt de fout terug na het verhogen, dan zit er een lek of een te zware taak in de code. Schakel plugins één voor één uit op een testomgeving, verwerk grote exports in delen (paginering met LIMIT/OFFSET of een generator in plaats van alles in een array), en controleer of er een lus is zonder eindvoorwaarde.

Let op: Verhoog de limiet niet blind naar enorme waarden. Op gedeelde hosting kan de hoster processen met veel geheugen afbreken, en een echte fout wordt dan alleen later zichtbaar.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Waarom krijg ik deze fout alleen in het beheer van WordPress?

In het beheer worden zwaardere taken gedaan, zoals updates, imports en afbeeldingen bewerken. WordPress gebruikt daar WP_MAX_MEMORY_LIMIT. Verhoog die, en kijk welke plugin op dat moment actief is.

Mijn wijziging in .htaccess geeft een 500-fout.

Dan draait PHP niet als Apache-module maar als FPM/FastCGI, en zijn php_value-regels in .htaccess niet toegestaan. Haal de regel weg en gebruik .user.ini of het PHP-menu van de hosting.

Hoeveel geheugen heeft een gewone website nodig?

Dat verschilt per site. De meeste sites draaien prima met 128 of 256 MB; zware webshops of page builders soms met meer. Meet liever dan te gokken: memory_get_peak_usage() laat zien wat een script echt gebruikt.