WordPress Debugging

Fehler loggen statt anzeigen

Der WordPress Debug-Modus ist eine eingebaute Funktion, die PHP-Fehler, Warnungen und Hinweise sichtbar macht. Aktiviert wird er über die Konstante WP_DEBUG in der wp-config.php. Wichtig auf einer Live-Seite: Fehler protokollieren statt anzeigen. Sonst legen Sie Serverpfade und Schwachstellen offen, die ein Angreifer direkt auslesen kann.

Etwas an Ihrer Website funktioniert nicht: Sie ist plötzlich weiß, wirft einen kryptischen Fehler oder ein Formular reagiert nicht mehr. Der Debug-Modus ist das passende Bordmittel, um WordPress-PHP-Fehler zu protokollieren und der Ursache auf die Spur zu kommen. Dabei gibt es einen sicheren und einen gefährlichen Weg, ihn einzuschalten. Ich zeige Ihnen den sicheren. Ein Hinweis vorweg: Legen Sie ein Backup Ihrer wp-config.php an, bevor Sie sie bearbeiten. Alle Schritte erfolgen auf eigenes Risiko.

Was ist der WordPress Debug-Modus (WP_DEBUG)?

Der WordPress Debug-Modus ist der eingebaute Weg, um während der Entwicklung oder Fehlersuche zu sehen, was im Hintergrund schiefläuft. PHP ist die Programmiersprache, auf der WordPress läuft, und genau ihre Meldungen fängt der Debug-Modus ab. Ist er aktiv, macht WordPress alle PHP-Meldungen sichtbar oder protokollierbar: Fatal Errors, Warnings, Notices und Deprecated-Hinweise auf veraltete Funktionen. Statt zu raten, welches Plugin oder Theme ein Problem verursacht, bekommen Sie den genauen Dateinamen und die Zeilennummer geliefert.

Im Alltag brauchen Sie diese Meldungen nicht, deshalb ist der Debug-Modus im Standard ausgeschaltet: Die Konstante WP_DEBUG steht ab Werk auf false. Erst wenn Sie sie auf true setzen, beginnt WordPress zu berichten. Wer nach dem englischen Begriff sucht, meint dasselbe: den WordPress Debug Mode. Alle offiziellen Details liefert die offizielle WordPress-Debugging-Dokumentation.

WordPress Debug-Modus in drei Zeilen aktivieren (wp-config.php)

Der Standardweg führt über die wp-config.php im Hauptverzeichnis Ihrer Installation. Diese Datei erreichen Sie per FTP oder über den Dateimanager in Ihrem Hosting-Panel. Sie brauchen kein Plugin, drei bis vier Zeilen genügen. So aktivieren Sie den Debug-Modus in WordPress sicher:

In drei Schritten zur sicheren Konfiguration

  1. Öffnen Sie die wp-config.php per FTP oder Dateimanager.
  2. Fügen Sie die folgende Konfiguration ein, und zwar vor der Zeile /* That's all, stop editing! Happy blogging. */. Diese Zeile markiert das Ende des Konfigurationsbereichs, Ihre Konstanten gehören davor.
  3. Speichern Sie die Datei, rufen Sie die fehlerhafte Seite auf und prüfen Sie anschließend die Datei wp-content/debug.log.
// WP_DEBUG-Modus aktivieren
define( 'WP_DEBUG', true );

// Fehler in wp-content/debug.log schreiben
define( 'WP_DEBUG_LOG', true );

// Fehleranzeige auf der Seite deaktivieren
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Jede Zeile beginnt mit define(), der Funktion, mit der WordPress solche Konstanten setzt. Achtung: Nur define('WP_DEBUG', true); allein ist die Falle. Dann landen alle Fehler sichtbar auf Ihrer Seite. Warum das gefährlich ist, sehen Sie gleich.

WordPress Debug-Modus in der wp-config.php sicher aktivieren – vier Zeilen für WP_DEBUG und das Fehler-Logging
Vier Zeilen in der zentralen Konfigurationsdatei entscheiden, ob Fehler still im Log landen oder offen auf der Seite erscheinen.

Die Debug-Konstanten erklärt

WordPress kennt mehrere Debug-Konstanten. Jede steuert einen anderen Teil der Fehlersuche. Die folgende Tabelle zeigt, was sie tun und ob sie auf einer Live-Seite etwas zu suchen haben:

Konstante Default Typ Was sie tut Live-tauglich?
WP_DEBUG false Boolean Schaltet den Debug-Modus ein: PHP-Fehler, Notices, Warnings, Deprecated-Hinweise. Nur temporär, mit Log statt Anzeige
WP_DEBUG_LOG false Boolean oder Pfad-String true schreibt Fehler nach wp-content/debug.log. Ein Pfad-String legt das Log an einen beliebigen Ort. Braucht WP_DEBUG = true. Ja (mit Display = false)
WP_DEBUG_DISPLAY true ⚠️ Boolean Steuert, ob Fehler im HTML auf der Seite ausgegeben werden. Braucht WP_DEBUG = true. Nein, auf Live immer false
SCRIPT_DEBUG false Boolean Lädt unminifizierte Core-CSS/JS für die Entwicklung an Core-Dateien. Nein
SAVEQUERIES false Boolean Speichert Datenbank-Queries samt Laufzeit in $wpdb->queries. Kostet Performance. Nein (nur beim Debuggen)
WP_DISABLE_FATAL_ERROR_HANDLER Handler aktiv (seit WP 5.2) Boolean true schaltet den Fatal-Error-Handler und damit den Recovery-Mode ab. Statt der Seite „Es gab einen kritischen Fehler auf deiner Website" erscheint der echte Fehler (nur für die Entwicklung). Nein

Am wichtigsten ist das Zusammenspiel der beiden Log-Konstanten, also das WordPress Debug Log über WP_DEBUG_LOG und die Anzeige über WP_DEBUG_DISPLAY. WP_DEBUG_LOG schreibt Fehler still in wp-content/debug.log, WP_DEBUG_DISPLAY zeigt sie im Browser. Für sicheres Debuggen wird das erste an- und das zweite ausgeschaltet. Alle Konstanten samt Werten stehen in der wp-config.php-Konstanten-Referenz.

💡 Profi-Tipp: debug.log außerhalb des Webroots ablegen

Statt eines Boolean geben Sie WP_DEBUG_LOG einen Pfad mit: define('WP_DEBUG_LOG', '/pfad/ausserhalb/webroot/debug.log');. So liegt das Protokoll außerhalb des öffentlich erreichbaren Ordners und niemand kann es über die URL aufrufen. Ein einfacher Handgriff, der sensible Daten aus der Schusslinie nimmt.

Der Fehler, den alle machen: Fehler auf der Live-Seite anzeigen

Hier ist der Punkt, an dem die meisten Anleitungen zu kurz greifen. Die Konstante WP_DEBUG_DISPLAY steht per Default auf true. Wer also nur define('WP_DEBUG', true); setzt und sonst nichts ändert, lässt WordPress die Fehler offen anzeigen, mitten auf der Live-Seite. Jeder Besucher, der die betroffene Seite aufruft, liest die vollständige Fehlermeldung mit.

Und da wird es zum echten Problem, aus reiner Entwickler-Hygiene-Sicht. Eine offene PHP-Fehlermeldung verrät erstaunlich viel: absolute Serverpfade wie /var/www/..., die Namen der beteiligten Plugins und Themes samt Versionsnummern und oft auch das Tabellenpräfix Ihrer Datenbank. Das ist genau die Art von Information, die jemand sammelt, bevor er eine bekannte Schwachstelle gezielt ausnutzt. Ich bin PHP-Entwickler, kein Security-Analyst, aber diese Zeilen schließe ich aus Prinzip.

Die Lösung steht schon in der sicheren Konfiguration von oben: WP_DEBUG_DISPLAY auf false. Zur Sicherheit kommt @ini_set('display_errors', 0); dazu, das ist der Gürtel zum Hosenträger und unterdrückt die Anzeige auch dann, wenn eine Server-Einstellung sich querstellt. Die Gegenüberstellung macht den Unterschied deutlich:

❌ Gefährlich auf einer Live-Seite (zeigt Fehler offen im Frontend):

// WP_DEBUG_DISPLAY ist per Default true, Fehler erscheinen sichtbar auf der Seite
define( 'WP_DEBUG', true );

✅ Sicher (loggen statt anzeigen):

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

🔒 Die Sicherheitsregel in einem Satz

Auf einer Live-Seite gilt eine einfache Regel: Fehler protokollieren statt anzeigen. Sichtbare Fehlermeldungen verraten Serverpfade, Plugin-Versionen und Angriffsflächen, deshalb gehört WP_DEBUG_DISPLAY dort immer auf false.

Wenn eine Fehlermeldung auf ein tieferes Problem deutet oder Ihre Seite bereits Schaden genommen hat, können Sie Ihre Website professionell reparieren lassen.

WordPress Debug-Modus als Sicherheitsrisiko: eine offene Fehlermeldung verrät Serverpfade auf der Live-Seite
Eine ungefilterte Fehlermeldung auf der Live-Seite ist ein offenes Fenster: Sie verrät Serverpfade, Datei- und Versionsdetails.

Was tun mit der Fehler-Ausgabe?

Die protokollierten Fehler landen standardmäßig in der Datei wp-content/debug.log. Dort sammelt WordPress jede Meldung mit Zeitstempel, Dateipfad und Zeilennummer, ordentlich untereinander. Das eigentliche Entschlüsseln der Einträge ist ein Thema für sich: Wie Sie diese Zeilen lesen und häufige Fehlermeldungen deuten, zeigt der Artikel WordPress Error-Logs finden und verstehen.

Der Debug-Modus liefert damit das Rohmaterial; die eigentliche Diagnose ist der nächste Schritt. Je nachdem, was im Log steht, geht es gezielt weiter:

WordPress Debug-Modus wieder ausschalten

Sobald der Fehler gefunden ist, gehört der Debug-Modus wieder aus. Setzen Sie dazu WP_DEBUG in der wp-config.php zurück auf false:

// Debug-Modus deaktivieren
define( 'WP_DEBUG', false );

Danach löschen oder leeren Sie die Datei wp-content/debug.log. Sie hat ihren Zweck erfüllt und würde sonst weiter mitschreiben und dabei nach und nach sensible Pfad- und Fehlerdetails ansammeln, die auf einer Live-Seite nichts zu suchen haben. Das Deaktivieren erfolgt genauso wie das Aktivieren: direkt in der wp-config.php, ganz ohne Plugin. Hinterlassen Sie die Produktion sauber.

WordPress Debug-Modus wieder ausschalten und die debug.log leeren, um die Live-Seite sauber zu hinterlassen
Nach der Fehlersuche gehört die Live-Seite sauber hinterlassen: Debug abschalten und das Protokoll leeren.

Häufige Fragen zum WordPress Debug-Modus

Öffnen Sie die wp-config.php und fügen Sie vier Zeilen ein: WP_DEBUG auf true, WP_DEBUG_LOG auf true, WP_DEBUG_DISPLAY auf false sowie @ini_set('display_errors', 0);. So werden Fehler in wp-content/debug.log protokolliert, aber nicht auf der Seite angezeigt. Ein Plugin brauchen Sie dafür nicht.
Nur dann, wenn Fehler angezeigt statt geloggt werden. Eine offene Fehlermeldung verrät Serverpfade, Datei- und Versionsdetails, die ein Angreifer auslesen kann. Setzen Sie auf einer Live-Seite deshalb WP_DEBUG_DISPLAY auf false und schreiben Sie Fehler ausschließlich ins Log. Dann sinkt das Risiko deutlich; idealerweise liegt die debug.log zusätzlich außerhalb des Webroots.
WP_DEBUG_LOG schreibt alle Fehler still in die Datei wp-content/debug.log, ohne dass ein Besucher etwas merkt. WP_DEBUG_DISPLAY steuert dagegen, ob Fehler direkt im Browser auf der Seite erscheinen. Für sicheres Debuggen schalten Sie das erste an und das zweite aus, so protokollieren Sie Fehler, ohne sie öffentlich zu zeigen.
Meistens fehlt eine der beiden Voraussetzungen: WP_DEBUG und WP_DEBUG_LOG müssen beide auf true stehen. WP_DEBUG_LOG allein genügt nicht. Außerdem entsteht die Datei erst, wenn tatsächlich ein Fehler auftritt, rufen Sie also die betroffene Seite auf. Der Standardpfad ist wp-content/debug.log; prüfen Sie zusätzlich die Schreibrechte des Ordners.
Ja. Nach der Fehlersuche setzen Sie WP_DEBUG wieder auf false und leeren die debug.log. Ein dauerhaft aktiver Debug-Modus kostet Performance, weil WordPress zusätzlich protokolliert, und die Log-Datei wächst unkontrolliert. Zudem sammelt sie sensible Pfad- und Fehlerdetails, die auf einer Live-Seite nichts zu suchen haben. Kurz: nur temporär zur Fehlersuche aktivieren.
Ja, der Standardweg kommt ganz ohne Plugin aus: Sie setzen die Konstanten einfach direkt in der wp-config.php. Debug-Modus ohne Plugin ist auf Live-Seiten sogar die sauberere Variante. Werkzeuge wie Query Monitor sind optionale Ergänzungen, die Abfragen und Hooks komfortabel im Backend anzeigen, den Debug-Modus selbst aktivieren Sie aber über die Konfigurationsdatei.

✍️ Über den Autor

Sascha Fix, freier Webentwickler aus Schleswig-Holstein

Ich bin Sascha Fix, freier Webentwickler aus Witzeeze in Schleswig-Holstein. Die Leidenschaft für Webentwicklung begleitet mich seit 1999, hauptberuflich arbeite ich als PHP-Developer. WordPress-Fehler und sauberer Code sind mein tägliches Handwerk, kein Security-Marketing, sondern Praxis aus echten Projekten. Mehr über mich.

⚠️ Hinweis

Dieser Artikel dient der allgemeinen Information, alle technischen Schritte erfolgen auf eigenes Risiko. Legen Sie vor Änderungen an der wp-config.php ein Backup an. Die sichere Konfiguration reduziert die Angriffsfläche, sie ersetzt aber keine vollständige Absicherung Ihrer Installation.

🔧

Fehler gefunden, aber unsicher, wie es weitergeht?

Sie haben den Debug-Modus aktiviert, aber die Fehlermeldung weist auf ein tieferes Problem hin, oder Ihre Seite wurde bereits kompromittiert? Dann schauen wir gemeinsam drauf. Ich analysiere den Fehler, sichere Ihre Installation und bringe die Website wieder sauber zum Laufen.