it-swarm.com.de

Wo soll ich WordPress mitteilen, wo Fehlermeldungen geschrieben werden sollen?

Ich habe zwei verschiedene Instanzen desselben Servers (eine für die Entwicklung, eine für die Bereitstellung), die unabhängig voneinander erstellt wurden, aber im Grunde das gleiche (dasselbe Betriebssystem, dieselbe WordPress-Version, denselben Inhalt usw.).

Ich bin jedoch verwirrt über die Konfiguration: Für mich sieht es so aus, als wären sie gleich konfiguriert (mit der Ausnahme, dass der Bereitstellungsserver angewiesen wird, keine Fehler/Warnungen in den Browser zu schreiben).

Beide Konfigurationen geben ini_set( 'error_log', '/var/log/wp-debug.log' ); an, und diese Datei wird tatsächlich von beiden erstellt. Auf einem Server wird jedoch alles, was mit error_log(...) geschrieben wurde, an /var/log/wp-debug.log gesendet, während auf dem anderen Server diese Ausgabe an /var/log/Apache2/error.log gesendet wird (obwohl PHP Fehler und Warnungen an /var/log/wp-debug.log gesendet werden).

Ich habe versucht, mit den definierten Werten von WP_DEBUG, WP_DEBUG_LOG und WP_DEBUG_DISPLAY zu spielen sowie die Einstellung von display_errors über ini_set(...) zu ändern, aber nichts scheint einen Unterschied zu machen.

Kann ich irgendwo angeben, dass die Ausgabe von error_log(...) -Aufrufen in das eine oder andere dieser Protokolle gehen soll? (Ich möchte, dass die Ausgabe immer zum Apache-Code error.log wechselt, da ich diese zusätzlichen Informationen verwenden möchte.)

3
Richard Wiseman

Wie an anderer Stelle auf dieser Seite beschrieben, bestand die Lösung in meinem Fall einfach darin, den Wert der PHP-Einstellung error_log zurückzusetzen. Ich tat dies, indem ich am Ende meines /var/www/html/wp-config.php hinzufügte:

ini_restore('error_log');

Ein wichtiger Punkt: Ich habe dies am Ende korrigiert, weil es nicht wirksam zu sein schien, wenn es direkt nach den verschiedenen define('WP_DEBUG...', ...);-Zeilen eingefügt wurde.

Vielen Dank an Rarst und bynicolas für ihren Rat, der mich zu dieser Lösung geführt hat.

0
Richard Wiseman

Auf der Seite von WP besteht die einzige Behandlung darin, das Protokoll auf WP_CONTENT_DIR . '/debug.log' zu setzen, wenn WP_DEBUG_LOG aktiviert ist (sehr schlechte Idee in der Produktionsumgebung als öffentlicher Ort). Wenn ich mich recht erinnere, war es bei den sehr frühen Implementierungen dieser Konstante möglich, den Pfad anzupassen, aber das ist nicht mehr der Fall.

Nach meiner Erfahrung sollte ini_set( 'log_errors', 1 ); ini_set( 'error_log', '/path' ) in wp-config.php ausreichen (wenn Sie WP_DEBUG_LOG nicht aktivieren, wird dies außer Kraft gesetzt).

Ihr zweiter Fall klingt seltsam. Ich würde erwarten, dass Fehler an das eine oder andere Ziel gehen, aber nicht an zwei separate Protokolldateien. Es kann sein, dass sich etwas ändert die Konfiguration zur Laufzeit. Ohne praktische Hilfe bei der Fehlersuche ist das nicht zu sagen.

3
Rarst