Konzeptionell: Debugging von PHP-Applikationen im Live-Betrieb Frage Konzeptionell: Debugging von PHP-Applikationen im Live-Betrieb zu Favoriten hinzufügen

Daumen hoch 1 Daumen runter

Ich habe immer häufiger den Fall, dass es keine Entwicklungsumgebung mit Deployment sondern lediglich eine Live-Umgebung gibt in der Applikationen debuggt werden müssen.

Allerdings ist es ja etwas unschön, wenn die Besucher einer vielbesuchten Webseite merkwürdige Array-Ausgaben [var\_dump(), print\_r()] zu Gesicht bekommen. Das darf natürlich nicht sein.

Deshalb hier mal die Frage in die Runde: Wie debuggt ihr solche Applikationen, ohne dass Besucher etwas davon mitbekommen? Danke für Eure Tipps!  

Antworten


Diese Antwort als GUT bewerten 3 Diese Antwort als SCHLECHT bewerten

Ich setze einen Logger mit mehreren Writern ein:

  • Logfile
  • E-Mail
  • Direktausgabe

Desweiteren setze ich auf verschiedene Loglevel:

EMERG  // Emergency: system is unusable
ALERT  // Alert: action must be taken immediately
CRIT  // Critical: critical conditions
ERR  // Error: error conditions
WARN  // Warning: warning conditions
NOTICE  // Notice: normal but significant condition
INFO  // Informational: informational messages
DEBUG  // Debug: debug messages

Der Clou an der Sache ist, das die verschiedenen Writer auf verschiedene Level "hören"

  • Logfile schreibt alle Level ins Log
  • Eine E-Mail wird erst ab dem Level "error" versendet
  • Die Direktausgabe erfolgt ab dem Level "warn" und nur auf dem Development System

Somit bekomme ich immer mit was wo los ist und kann mir in jedem Fall detailierte Informationen holen, da z.B. das Logfile immer alle Einträge enthält.

Diese Antwort als GUT bewerten 2 Diese Antwort als SCHLECHT bewerten

Mann kann sich zum besispiel eine eigene php log daei anlegen:

ini_set('error_log', 'logfile.log');

ini_set('display_errors', 'Off');

ini_set('log_errors', 'On');

und dann mit 

trigger_error() arbeiten.

Cool, das kannte ich noch gar nicht. Habe bisher immer auf Basis meines Users oder meiner IP-Adresse Ausgaben nur für mich selbst gemacht.

jkahn am 20.01.2012
Diese Antwort als GUT bewerten 2 Diese Antwort als SCHLECHT bewerten

ich arbeite mir einer Abfrage, die dies Ausgaben des Debugging nur für bestimmte User erlaubt; in der Regel frage ich dabei ein Objekt ab, was nur diese/der User hat und geben aus. Geht schnell und erfordert wenig Aufwand.

Ansonsten schiebe ich diverse Sachen in den Log (via php.ini); läßt aber beim Debugging nicht genug Freiheit zu.

Zum Teil schiebe ich die Ausgabe des Debugging auch in eine Konsole, bspw. mittels FirePHP in Firefox und Firebug. Dazu gibt es auch andere Ansätze, die ich allerdings nie im Livebetrieb genutzt habe. Dabei ist mir DebugConsole aufgefallen, aber wie gesagt nur in der Dev-Umgebung genutzt.

DebugConsole scheint ziemlich interessant zu sein.

jkahn am 20.01.2012

hier ist ein weiterer Helfer, ein Datei einbinden, Debugg-Inhalte auspucken: http://pbl.elgatonaranja.com/

frank am 27.01.2012
Diese Antwort als GUT bewerten 2 Diese Antwort als SCHLECHT bewerten

Ich benutze häufig diese Zeile, wenn es schnell gehen soll:

file_put_contents('/tmp/php.log', print_r($var, true), FILE_APPEND | LOCK_EX);

 

Nicht schick aber wirksam. Und funktioniert immer, auch ohne die php.ini anfassen oder Logging-Bibliotheken einbinden zu müssen.

 

wobei man die php.ini nicht anfassen muss; lediglich in dem Bereich ablegen, wo man debuggt und gut. Aber klar; nicht der schnellste weg und oft braucht man eine schnelle Auswertung.

frank am 22.01.2012

danke, tolle Lösung für mal zwischendurch!!

viktord am 23.01.2012
Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Wenn du Zugriff auf die PHP.INI hast, kannst du ja auch XDEBUG benutzen und mit Netbeans direkt REMOTE debuggen.

Hast du es geschafft, das bei XAMPP mit Windows einzurichten? Ich versuch es jedes Jahr auf neue doch es klappt nie.

kevin am 23.02.2012
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Ich hab letztens gelesen, dass einer sich die Debug Infos per Mail jedes Mal zusenden lässt...

etwas crazy, aber es tut seinen Zweck...

 

Als ziemlich simple und Browserabhängige Alternative könnte man sich in einem versteckten div die Ausgabe liefern lassen, oder?

<div style="display:none;">Testausgabe</div> 

dann ist es wohl einfacher diese in die Kommentare in HTML <!-- debug info --> zu schreiben. Per Mail? Infos über Probleme wie 404 oder log-fehler, aber Debuggings-Infos braucht man doch beim Tun.

frank am 20.01.2012

Da finde ich auch andere Wege besser als den E-Mail-Versand.

moody am 22.01.2012

Deine Antwort

Registrierter User Bereits registriert? Bitte logge dich vor dem Antworten ein.

Deine Daten