WordPress error log lezen: een praktische gids

Een WordPress error log lezen is geen developer-werk. Het is vaak het verschil tussen een opgeloste site en een week wachten op support.

· 9 augustus, 2026 · 8 min lezen
In het kort
  • Hosting-support kijkt naar server-logs, niet naar WordPress' eigen debug.log.
  • Zet WP_DEBUG, WP_DEBUG_LOG en WP_DEBUG_DISPLAY correct in wp-config.php.
  • Bescherm debug.log met .htaccess of plaats hem buiten webroot.
  • Focus op fatals eerst, warnings per cluster, notices meestal negeren.
  • Structureel logs monitoren voorkomt weken support-tickets over onbekende fouten.
In dit artikel

Een WordPress error log lezen levert vaak meer op dan drie tickets bij hosting-support, omdat hosting-support naar een ánder log kijkt. Die ene zin verklaart waarom zo veel mensen weken bezig zijn met een onverklaarbare fout die in een logfile al de hele tijd helder staat.

In mijn ervaring loopt dit precies zo: een ondernemer mailt naar hosting-support over een witte pagina, een 500-fout, of een onverwacht 503. Support draait een check op de server-error-log, ziet niets bijzonders, mailt terug “geen fouten gevonden”. Terwijl in de WordPress-eigen debug.log keurig de exacte regel code staat die struikelt. Maar dat log staat los van wat support inkijkt.

WordPress error log lezen: WP_DEBUG en debug.log in wp-config.php op de werkplek

Waarom hosting-support vaak “geen fout” zegt

Hosting-support kijkt standaard naar het server-error-log. Bij Apache is dat meestal /var/log/apache2/error.log of een per-domein-variant. Bij Nginx hetzelfde, andere paden. Dat logfile bevat fouten op het niveau van de webserver: 500-statuscodes, 503-fouten, PHP-fatals die het script helemaal opblazen.

Maar er is een tweede categorie fouten die daar niet in komt: WordPress-interne fouten. Een plugin die een notice gooit, een functie die deprecated wordt, een query die niets oplevert maar wel een waarschuwing veroorzaakt. Die staan in wp-content/debug.log, mits je dat logbestand hebt aangezet. Hosting-support komt daar zelden bij.

Het gevolg: support meldt te goeder trouw dat er “niets aan de hand is”, terwijl debug.log de oorzaak letterlijk noemt. Een uur zelf het log inkijken (of door iemand laten inkijken) bespaart vaak een week heen-en-weer mailen.

WordPress error log lezen begint met WP_DEBUG_LOG aanzetten

Standaard staat WordPress-debugging uit. Dat is op productie ook goed: foutmeldingen op de site zelf zijn lelijk én een veiligheidsrisico. Maar het log opslaan zonder ze te tonen is wel verstandig. Daar dienen drie constanten voor in wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

WP_DEBUG zet debug-modus aan. WP_DEBUG_LOG zegt: schrijf fouten naar een logfile (standaard /wp-content/debug.log). WP_DEBUG_DISPLAY = false zorgt dat fouten niet op de pagina zelf verschijnen.

Plaats deze regels boven de regel die zegt /* That's all, stop editing! Happy publishing. */ in wp-config.php. Anders worden ze overschreven door WordPress’ default-instellingen.

Optioneel maar handig is define( 'SCRIPT_DEBUG', true );. Daarmee laadt WordPress unminified versies van core JS en CSS, wat het debugging van front-end-fouten makkelijker maakt. Op productie wel weer uitzetten als je klaar bent, want unminified bestanden zijn groter.

Wat in wp-config.php hoort: de constanten op een rij

Voor productiegebruik is dit mijn standaard-set:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

De @ini_set is een extra zekerheid: hij overrulet eventuele PHP-instellingen die fouten alsnog op het scherm willen tonen. Belt-en-bretels.

Op staging of lokaal mag je WP_DEBUG_DISPLAY op true zetten. Dan zie je fouten direct, wat tijdens ontwikkelen prettig is. Maar op productie: nooit.

WP_DEBUG en WP_DEBUG_LOG constanten in wp-config.php voor WordPress debug logging

Waar debug.log staat en hoe je hem veilig leest

Standaardlocatie: /wp-content/debug.log. Te lezen via FTP, SFTP, of de file manager van je hoster. Met een SSH-toegang ben je nog sneller: tail -f wp-content/debug.log laat hem live meelopen terwijl jij in een andere browser-tab acties uitvoert op de site.

Een belangrijke veiligheidsstap: debug.log is publiek toegankelijk als hij in /wp-content/ staat zonder bescherming. Iemand die https://jouwsite.nl/wp-content/debug.log opent, kan hem lezen. Dat is een lek van interne info: paden, database-tabellen, plugin-namen, soms wachtwoorden uit slecht geschreven plugins.

Twee oplossingen:

Optie A: .htaccess-bescherming. Voeg in wp-content/ een .htaccess toe met:

<Files debug.log>
Order allow,deny
Deny from all
</Files>

Optie B: log buiten webroot. Geef in wp-config.php een ander pad op:

define( 'WP_DEBUG_LOG', '/home/jouwgebruiker/logs/wordpress-debug.log' );

Dat pad moet bestaan en schrijfbaar zijn voor PHP. Veiliger maar iets meer setup.

Drie type fouten: notice, warning, fatal

Niet elke regel in debug.log is even urgent. Drie niveaus, in toenemende ernst:

Notice. Code-smell. Iets is niet zoals het hoort, maar de code werkt nog. Bijvoorbeeld “Undefined index: foo in /path/to/plugin.php on line 42”. Een plugin probeert een array-key te lezen die niet bestaat. Niet kapot, wel rommelig. Honderden notices in een log betekent vaak: één plugin is sloppy geschreven.

Warning. Waarschuwing. De code voert nog uit, maar het resultaat is mogelijk niet wat je verwacht. “Warning: array_map() expects parameter 2 to be array, null given”. Code zit te wrikken aan een waarde die er niet hoort. Vaak een teken dat een vorige stap (een query, een API-call) iets anders teruggaf dan verwacht.

Fatal. Stuk. De PHP-script stopt direct. “Fatal error: Uncaught Error: Call to undefined function…” of “Maximum execution time of 30 seconds exceeded”. Dit is je 500-fout op de site. Fatals zijn altijd onmiddellijk actie.

Praktische volgorde: fatals oplossen, warnings bekijken op clusters (zelfde plugin? zelfde context?), notices negeren tenzij ze in extreme aantallen voorkomen.

WordPress debug-log helper

Maak een veilige debug-setup en lees je foutmelding

Stel de debug-constanten in zonder fouten aan bezoekers te tonen. Plak daarna een logregel voor een rustige uitleg en volgende stap.

1. Kies je debug-instellingen

De veilige basis staat al aan. Gebruik de extra opties alleen tijdelijk wanneer je gericht onderzoekt.

Jouw debug-setup

Plaats dit boven /* That's all, stop editing! */ in wp-config.php.

2. Decodeer een foutmelding

Kies het type zelf of plak een volledige regel. Herkenbare patronen krijgen voorrang op je keuze.

Volgende stap:

Waar staat debug.log en hoe lees je veilig?
  • Het standaardbestand staat op wp-content/debug.log.
  • Lees eerst de eerste relevante fout en noteer bestand, regelnummer en tijdstip.
  • Laat het logbestand niet langer dan nodig publiek bereikbaar en verwijder gevoelige logdata na je onderzoek.
  • Zet WP_DEBUG, SCRIPT_DEBUG en SAVEQUERIES na de test weer uit.

Een hulpmiddel. Bij een fatal error op een live site zijn een recente back-up en een staging-omgeving aan te raden.

Server-logs versus WordPress-logs

Twee logfiles, twee verschillende stories. Wat staat waar?

WordPress debug.log (/wp-content/debug.log): PHP-fouten die binnen WordPress optreden. Plugin-issues, theme-fouten, queries die niets terugleveren. Wat WordPress zelf ziet en wil melden.

Server-error-log (Apache/Nginx): Fouten op webserver-niveau. 500-statuscodes, request die nooit bij PHP aankwam, fouten in .htaccess-regels, PHP-segfaults die WordPress niet eens kan loggen omdat PHP zelf crasht.

PHP-error-log (per-domein): Fouten in PHP-configuratie, memory limits, geheugen-allocaties. Vaak ergens onder /var/log/php/ of toegankelijk via hosting-paneel (“PHP error log” of “Error logs”).

In mijn ervaring is debug.log de eerste plek om te kijken, server-error-log de tweede, en alleen bij hardnekkige gevallen ook PHP-error-log. Als debug.log leeg is bij een 500-fout, dan zit het probleem buiten WordPress: een .htaccess-regel, een memory-limit, een server-config-issue.

Voor live-monitoring van WordPress-warnings binnen admin is Query Monitor een gratis plugin die naast debug.log werkt. Hij toont warnings, slow queries en hooks per pageload. Handig als je niet voor elke fout een tail in een terminal wil openen.

Query Monitor in de WordPress admin-balk toont warnings en queries live

Wanneer je log opruimt en wanneer je hem bewaart

Een actief debug.log kan snel groot worden. Een zelfde fout die honderden keren per dag wordt gelogd, vult een logfile in een week tot 50 MB en hoger.

Mijn richtlijn:

  • Onder 10 MB: prima, laat staan.
  • Tussen 10 en 50 MB: scrol naar het einde, kijk welke recente fouten erin staan, en archiveer als je iets specifiek wil oplossen.
  • Boven 50 MB: opruimen, of een rotation instellen. Een log van 100 MB is praktisch onleesbaar en kost disk-space.

Voor het oplossen van een specifiek probleem is een schone log handig. Maak een back-up van de huidige debug.log, leeg hem (> debug.log via SSH, of via FTP de inhoud verwijderen), voer de actie uit die de fout veroorzaakt, en lees alleen wat nieuw is binnengekomen.

Verbeteren boven herbouwen geldt ook voor logs lezen: meestal is de oorzaak een specifieke regel in een specifieke plugin, en is daar in een halfuur een fix voor. Een hele site opnieuw bouwen omdat één plugin notices spuit is overkill.

Voor mensen die het regelmatig moeilijk vinden om er zelf doorheen te komen is een doorlopend WordPress onderhoud waarin logs structureel worden gemonitord meestal goedkoper dan elke maand losse uren. Logs lezen voordat het probleem groot wordt is mijn definitie van onderhoud.

Voor wie het exacte WordPress-debug-spec wil lezen is de officiële WordPress debug-documentatie de bron. Daar staan alle constanten plus de minder gebruikte zoals WP_DEBUG_DISPLAY en logging naar specifieke streams.

Tot slot: hetzelfde principe geldt voor andere stacks. Laravel heeft storage/logs/laravel.log, Drupal heeft de dblog-module en Watchdog-tabel, Joomla logt naar zijn eigen logfolder. De tools verschillen, maar het idee is identiek: lees voordat je gokt. Een lokaal aanspreekpunt in Terneuzen helpt vooral als je dat lezen niet zelf wilt doen.

Serhii Lypii
Gratis meedenken

Logs lezen samen onder een uur?

Stuur me je site en de foutmelding die je ziet. Eén uur logs lezen onder 70 euro is meestal genoeg om het patroon te vinden. Je krijgt terug welke fout dit is, waar hij vandaan komt en wat een fix kost.

Vraag een log-diagnose aan
Vond je dit nuttig? Deel het:
FAQ

Veelgestelde vragen over WordPress error logs

Mag debug.log aanstaan op een live-site?
Ja, mits WP_DEBUG_DISPLAY op false staat en de logfile niet publiek toegankelijk is. Zonder bescherming kan iedereen jouwsite.nl/wp-content/debug.log opvragen en interne info lezen. Met een .htaccess deny of het log buiten webroot is het veilig en levert het waardevolle info op die hosting-support niet ziet.
Hoe groot mag debug.log worden?
Praktisch: opruimen rond 50 tot 100 MB. Boven dat wordt het lastig te lezen en kost het disk-space. Sommige hosters hebben quota waar een te groot log roet in het eten kan gooien. Periodiek leegmaken na een succesvolle troubleshooting-sessie is goede hygiëne.
Mijn log is leeg maar de site geeft een fout, wat nu?
Dan zit de fout vóór WordPress laadt. PHP-config (memory limit, max execution time), .htaccess-regels die de request blokkeren, of een server-niveau probleem. De server-error-log via hosting-paneel is dan de juiste plek. Vraag hosting-support specifiek om "het PHP error log" en "het Apache (of Nginx) error log" voor jouw domein.
Kan ik debug.log monitoren zonder elke dag te FTP'en?
Ja. Plugins als Debug Log Manager of WP Activity Log tonen het log direct in admin. Voor serieuzere monitoring stuur je logs naar een externe service (Better Stack, Papertrail, Sentry), die alerts kan sturen zodra een fatal binnenkomt. Voor een MKB-site is een handmatige check één keer per week meestal voldoende.
Wat doe ik met honderden "Notice: Undefined index"?
Negeren als de site werkt, of melden aan de plugin-developer. Notices zijn meestal code-hygiene, geen acute blokker. Wel oppassen: een notice van honderd keer per dag wijst op een plugin die ergens iets verkeerd doet, en kan over tijd uitgroeien tot een echt probleem. Bij twijfel: één keer goed bekijken welke plugin het is, en als de developer er niets aan doet, overwegen om hem te vervangen.
Serhii Lypii
Over de auteur

Serhii Lypii

Freelance webmaster · Terneuzen

Sinds 2012 werk ik met websites en leverde ik ruim 210 projecten op. Ik help mkb-ondernemers met onderhoud, snelheid, beveiliging en praktische automatisering. Nuchter, zonder hype.

Ik schreef dit artikel op en werkte het voor het laatst bij op .

Meer over Lypii
Even sparren over je site?

Loop je ergens tegenaan of twijfel je over je site? Ik denk graag mee. Kies hieronder hoe je contact opneemt.

Reactie binnen 4 uur op werkdagen
Navigatie
Home Over mij Kennisbank
Contact
+31 6 39 56 93 03 serhii@lypii.nl WhatsApp
Stuur een bericht