Wenn WP_DEBUG_LOG auf true gesetzt ist, wird keine Debug-Ausgabe in debug.log angezeigt, warum?

Lesezeit: 4 Minuten

Ich versuche, die grundlegende Debug-Ausgabe mit WordPress für ein Plugin zu aktivieren, das ich entwickle. Ich habe es bisher geschafft, einige zu bekommen, konnte sie aber nicht umleiten wp-content/debug.log. Ich bin ungefähr gefolgt die Anleitung von Douglas Neiner. Folgendes habe ich getan:

Ich habe dieses Code-Snippet am Ende von hinzugefügt wp-config.php:

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

habe ich manuell erstellt debug.log Datei und stellte sicher, dass sie zugänglich ist www-data user (Ich führe WordPress lokal auf Ubuntu 12.04 aus):

septi@norbert:~$ sudo su www-data -c 'ls -l /usr/share/wordpress/wp-content/debug.log'
-rw-rw-r-- 1 root www-data 0 Dec  9 22:12 /usr/share/wordpress/wp-content/debug.log
septi@norbert:~$ sudo su www-data -c 'ls -l /srv/www/localhost/wp-content/debug.log'
-rw-rw-r-- 1 root www-data 0 Dec  9 22:12 /srv/www/localhost/wp-content/debug.log
septi@norbert:~$ sudo su www-data -c 'echo i can write >> /usr/share/wordpress/wp-content/debug.log'
septi@norbert:~$

Ein paar vermeintliche Debug-Ausgabeanweisungen innerhalb des Plugin-Aktivierungs-Hooks sowie den absichtlichen Fehler hinzugefügt:

include ('i fail wp');

register_activation_hook (__FILE__, 'hello_world_activate');

function hello_world_activate()
{
    error_log ('I love debug output when it works!');
}

Was ich erwarte, ist eine Fehlermeldung über die fehlende Include-Datei in debug.log zusammen mit dem “Ich liebe Debug-Ausgabe, wenn es funktioniert!” Nachricht, und nichts auf der Seite. Was ich bekomme, ist die fehlende Include-Datei in der Seitennachricht und nichts drin debug.log. Die Debug-Ausgabenachricht geht jedoch nicht vollständig verloren. Ich fand es in der /var/log/apache2/error.log:

[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(i fail wp): failed to open stream: No such file or directory in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(): Failed opening 'i fail wp' for inclusion (include_path=".:/usr/share/php:/usr/share/pear") in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] I love debug output when it works!, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(i fail wp): failed to open stream: No such file or directory in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(): Failed opening 'i fail wp' for inclusion (include_path=".:/usr/share/php:/usr/share/pear") in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=

Ich vermute, dass die error_log() Die Funktion ist nicht die richtige, um sie für die Ausgabe zu verwenden debug.log, aber ich habe den richtigen Weg nicht gefunden. Oh, natürlich könnte ich den Dateipfad einfach fest codieren und daran anhängen, aber, weißt du …

  • selbes Problem hier. Alles ist eingeschaltet, keine Fehler werden angezeigt

    – weh

    31. Oktober 2013 um 13:56 Uhr

Ich bin auf dasselbe Problem mit WordPress gestoßen, das in Apache 2.4 auf Fedora 19 ausgeführt wurde. Die Ausgabe von error_log() landete in /var/log/httpd/error_log anstelle von wp-content/debug.log. Der Httpd-Prozess hatte Schreibberechtigung (+775) für das Verzeichnis /var/www/html/wp-content, konnte aber die Datei wp-content/debug.log nicht erstellen.

Meine wp-config.php Debug-Einstellung war:

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

Wie sich herausstellte, war die wahre Ursache SELinux. Ich habe die SELinux-Richtlinie geändert und httpd erlaubt, mit den folgenden Befehlen in wp-content zu schreiben. (Siehe SELinux Troubleshooter, um den tatsächlichen Befehl für Ihre Installation zu erhalten.)

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/wp-content'
restorecon -v '/var/www/html/wp-content'

Danach erscheinen Debug-Meldungen in wp-content/debug.log.

die Funktion error_log() schreibt in das Fehlerprotokoll des Webservers (z. B. /var/log/httpd/error_log); was du willst ist trigger_error().

  • Das ist nicht immer richtig! Ich habe verwendet error_log() in das Debug-Log schreiben. Ich suche derzeit nach einem Grund, warum (bei anscheinend gleicher Konfiguration) das error_log() Nachrichten gehen plötzlich in das Apache2-Fehlerprotokoll statt in das Debug-Protokoll.

    – IpsRich

    21. Januar 2016 um 10:54 Uhr

  • FALSCH. Durch Hinzufügen von define( ‘WP_DEBUG_LOG’, true ); für wp-config sollte dies zum gewünschten Verhalten führen. codex.wordpress.org/Debugging_in_WordPress#WP_DEBUG_LOG

    – Sandwich

    11. April 2017 um 10:25 Uhr

1397060cookie-checkWenn WP_DEBUG_LOG auf true gesetzt ist, wird keine Debug-Ausgabe in debug.log angezeigt, warum?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy