Debugging mit FirePHP (Einführung mit Beispiel)

Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 
Script Seite

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog Verzeichnis

Partner
Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
http://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
http://www.Hosterplus.de
 
 
 

Debugging mit FirePHP (Einführung mit Beispiel)

Sie befinden sich: Home > Webmaster News

Wie bei allen anderen Programmieraufgaben auch ist das Debugging von PHP-Code eine zeitaufwändige und lästige Aufgabe, die jedoch zum Alltag eines jeden Programmierers gehört. Damit das Debugging einfacher und schneller und am besten direkt im Browser vorgenommen werden kann, wurden spezielle Add-Ons für den Browser Firefox entwickelt, mit denen sich eine solche Funktionalität einfach nachrüsten lässt. Der folgende Artikel stellt das hierfür geeignete Add-On "FirePHP" vor, dessen Funktionen und die Installation des Add-Ons.

Das kann das Debugging über den Browser leisten

Das Browserdebugging ist besonders komfortabel, da es dem Entwickler die Seite so präsentiert, wie der Nutzer sie später sehen wird. Das Debugging kommt dabei an unterschiedlichen Stellen zum Einsatz und betrifft eine Reihe von Skriptsprachen. So kann es etwa bereits Fehler im HTML-Code geben, so dass einzelne Div-Elemente und anderes auf der Seite nicht richtig dargestellt werden. Interaktive Menüs und viele andere Funktionen greifen auf Jacascript zurück und gerade hier kann der Debuggingaufwand erheblich sein.

Sollen Daten dynamisch im Hintergrund heruntergeladen werden, wird auf Ajax gesetzt und die Kommunikation mit Datenbanken macht häufig einen kombinierten Einsatz von PHP und MYSQL erforderlich. Es gibt es viele Stellen, an denen sich Programmierfehler eingeschlichen haben könnten, weshalb ein gründliches Debugging umso wichtiger ist. Zum Einsatz kommen hierfür Tools wie Firebug, das um zusätzliche Funktionen für das PHP-Debugging um FirePHP erweitert werden kann.

Die wichtigsten Funktionen des Add-Ons FirePHP

FirePHP ist eine potente Erweiterung für das Debugging-Tool Firebug. Aufgerufen wird die Erweiterung, indem im Browser die Taste F12 gedrückt wird oder wahlweise über die Systemleiste. Im Wesentlichen erweitert FirePHP das Debugging von Firebug, indem die Firebug-Konsole durch einen einfachen Methodenaufruf gelogt wird. Die Funktion lautet dabei einfach „fb()“ und kann überall im PHP-Code verwendet werden. Besonders sinnvoll ist das bei der Entwicklung von Anwendungen, bei denen AJAX, JSON und XLM zum Einsatz kommen und der Programmierer eine Datenausgabe benötigt, die nicht den Content auf der Seite überlagert. Aktuell ist FirePHP in der Version 0.7.1 erhältlich und ist kompatibel mit Firefox ab der Version 8 sowie Firebug ab der Version 1.9.

So wird die Installation von FirePHP vorgenommen

Die Installation von FirePHP ist denkbar einfach und sollte versierte Computeranwender vor keine Probleme stellen. Zuerst muss im Menü von Firefox der Menüpunkt „Add-Ons“ ausgewählt werden.

Hierüber gelangt man auf eine Suchseite, über die alle für Firefox veröffentlichten Add-Ons gefunden werden können.

Im Suchfeld wird „FirePHP“ eingegeben und als Suchergebnis sollte als erster Eintrag FirePHP in der Version 0.7.1 erscheinen. Nach dem Klick auf den Installieren-Button wird FirePHP automatisch heruntergeladen und eingerichtet.

Damit das Tool auch tatsächlich aktiv wird, ist ein Neustart des Browsers erforderlich.

Zu beachten ist bei der Installation jedoch folgendes: Bei FirePHP handelt es sich im eigentlichen Sinne nicht um eine eigenständige Erweiterung, sondern um die Erweiterung einer Erweiterung. Die grundlegenden Debugging Funktionen werden nämlich von dem Add-On Firebug bereitgestellt, dessen Funktionsumfang durch FirePHP erweitert wird. Sollte Firebug noch nicht installiert sein, kann die Einrichtung des Add-Ons auf die gleiche Weise vorgenommen werden wie oben beschrieben für FirePHP. Dazu muss in das Suchfeld für Add-Ons lediglich Firebug eingegeben werden.

Doch auch nach der Installation von Firebug ist FirePHP noch nicht gänzlich lauffähig. Nun ist zwar der Browser für das Debugging entsprechend vorbereitet, es muss jedoch auch auf der Serverseite Code in Form von FirePHP-Bibliotheken bereitgestellt werden. Auf der Website von FirePHP finden sich die entsprechenden Dokumente (https://www.firephp.org/), die in das Verzeichnis PEAR kopiert werden müssen. Wo sich diese Verzeichnis genau befindet, hängt von der Serverumgebung ab und davon, ob mit FirePHP direkt auf einem laufenden Server oder in einer lokalen Testumgebung gearbeitet werden soll.

Wenn Sie Xampp unter Windows Xp verwenden um ihre PHP Skripte zu entwickeln, müssen sie einfach auf "Start" und anschließend "Ausführen..." klicken.

Danach geht ein Windows Fenster auf wo Sie CMD eingeben und anschließend die Eingabetaste betätigen.

Nun wechseln Sie mit dem Kommando CD in das Verzeichnis von PHP. In meinem Fall habe ich Xampp in auf einer anderen Festplatte installiert, dadurch muss ich die Festplatte mit "e:" und " Eingabetaste" wechseln. Sobald sie sich im Verzeichnis von PHP befinden, können sie mit dem Befehl: "pear channel-discover pear.firephp.org" den Pear Channel selektieren und anschließend über den Befehl: "pear install firephp/FirePHPCore" die FirePHP Erweiterung installieren.

Zum überprüfen ob die Installation erfolgreich gewesen ist, kann man in das Pear Verzeichnis (z.b: "cd pear" ) wechseln und mit der Eingabe von "dir" werden alle Verzeichnisse aufgelistet. hier sollte nun das Verzeichnis "FirePHPCore" mit aufgelistet werden.

Sollte dieses Verzeichnis noch nicht existieren, dann scheint die Installation nicht erfolgreich durchgeführt wurden zu sein. Um FireBug mit FirePHP zu starten, müssen sie ausschließlich die Tasten F12 klicken im FireFox, dann wird FireBug mit der Konsole geöffnet.



Diese Statusmeldungen sollten bekannt sein

Damit FirePHP effektiv eingesetzt werden kann, sollten die verschiedenen Statusmeldungen unterschieden werden können, die als Debugging-Breakepoints bezeichnet werden. Eine der wichtigsten Methoden ist dabei die Logging-Funktion, mit der nicht nur einfache Strings, sondern auch ganze Arrays ausgegeben werden. Gerade die Ausgabe großer Arrays kann zu einer unschönen Zerstörung des Layouts führen. Aufgerufen wird das Logging mit Fb::log();. Weitere Methoden sind das Loggen von Informationen per Fb::info();, die Ausgabe von Warnmeldungen mit Fb::warn(); und natürlich das Ausgeben von Statusmeldungen, die sich auf Fehler beziehen per Fb::error();.

Aufbau und sinnvolles nutzen

Wenn man FireBug mit FirePHP sinnvoll nutzen möchte, empfiehlt es sich eine Debug Variable (z.b. $debug=1;) in der Konfigurationsdatei zu deklarieren. Da die Konfigurationsdatei immer als erstes geladen wird, kann man in späteren Ablauf prüfen ob die Debug Variable zum Beispiel den Wert 1 zugewiesen bekommen hat. Sollte dies der Fall sein, kann der FirePHPCore geladen und die FirePHP Anweisungen im Sourcecode ausgeführt werden. Wenn die Entwicklungszeit abgeschlossen ist setzt man den Wert auf z.b.: $debug=2; um die FirePHP Meldungen nicht mehr auszugeben.

Man könnte natürlich auch den ganzen Sourcecode aufräumen, bloß nicht immer hat man die Zeit dazu und wenn man später das Projekt weiterentwickeln möchte, freut man sich über den enthaltenen Sourcecode für das Debuging. So kommen wir mal zum sinnvollen Aufbau. Abschließend von Sourcecode könnt ihr mein Beispiel komplett, als Ziparchiv herunter laden.

Beispiel für die Konfigurationsdatei:

<?php
/**
 Damit  die Config.php nicht aufgerufen wird, sollte
 dies der Fall sein wird automatisch auf die
 Startseite geleitet
 */
if(stripos ($_SERVER["PHP_SELF"], "config.php")) {
    
header('Location:./index.php');
    exit;
}
/**
 Debug Variable
 @param int $debug
 */
$debug=1;
/**
 In dieser Variable wird der Pfad und Dateiname zu
 einer Logdatei gespeichert
 @param string $logfile
 */
$logfile='logfile.log';
/**
 Zugangsdaten zu der Datenbank usw...
 */
?>

Beispiel für die Error Handler Funktion:

Die Error-Handler Funktion nutze ich immer um PHP Fehler direkt bei der Entwicklung für mich darzustellen. Somit habe ich die Möglichkeit ohne großen Aufwand ein Überblick zu bekommen. Zusätzlich wird automatisch bei einem Fehler eine Logdatei befüllt.

Die Logdatei wird in der Konfigurationsdatei deklariert. Später kann man einfach und schnell mit der Fehlersuche begonnen werden, da alle Fehler in der Logdatei stehen. Manchmal kommt es ja auch dazu, dass man nicht jeden Fall ausgiebig testen kann oder einen Fehler einfach übersieht. Dies ist ja wie bekannt, der kurzen Debuging-Zeit geschuldet. :-(

<?php
/**
 Damit die error_log.php nicht aufgerufen wird,
 sollte dies der Fall sein wird automatisch auf die
 Startseite geleitet
 */
if (stripos($_SERVER["PHP_SELF"], "error_log.php")) {
    
header('Location:./index.php');
    exit;
}
/**
 Diese Fuction gibt bei ein Fehler die FirePHP
 Fehlermeldung aus und speichert in der logfile.log
 alle Fehler
 */
function error_handler($code$msg$file$line{
    global 
$debug$logfile;
    if (
$debug == 1{
        if (
function_exists("fb")) {
            
FB :: group('Fehler in der Zeile: $line);
            
fb('Meldung: $msgFirePHP :: ERROR);
            
fb('Datei: $fileFirePHP :: ERROR);
            
FB :: groupEnd();
        }
    }
    if (
file_exists($logfile== true{
        
$logData date("d-M-Y h:i:s"time()) ", ";
        
$logData.= $code ", $msg ", $line;
        
$logData.= ", $file "n";
        
file_put_contents($logfile$logDataFILE_APPEND);
    }
}
set_error_handler('error_handler'E_ALL);
?>

Beispiel für die index.php:

In diesem Beispiel stelle ich ein paar mögliche Fehlerausgaben dar. Im oberen Abteil habe ich zwei Fehler eingebaut, welche den Error-Handler präsentieren und im unteren Abschnitt noch ein paar Ausgabemöglichkeiten für Arrays, Objekte und Variablen dargestellt.

Hierbei habe ich jeweils ein paar Kommentare mit dem Sourcecode eingebaut, normalerweise sollte so weit alles klar sein. Wenn jemand noch Fragen hierzu hat, könnt Ihr gern eine Frage bei uns im Forum stellen.

<?php
/*
 Beispiel zur sinnvollen Nutzung von FirePHP und
 FireBug
 */
@include_once (dirname(__FILE__'/inc/config.php');
if (
$debug == 1{
    @include_once (
'FirePHPCore/fb.php');
    
ob_start();
}
@include_once (
dirname(__FILE__'/error_log.php');
/**
 Ab hier koennt Ihr Code kommen...
 */
// Beispiel Fehler ...
$test .= 'asas';

// nächster Fehler ...
eregi("!!"'');

// Variable
$test 1;
// Infoausgabe der Variable
fb($test'Wert von $test'FirePHP :: INFO);

// Mehrdimensionales array
$test_array=array(
    
'vorname'=>array(
        
'1'=>'Nico',
        
'2'=>'Nancy'
    
),
    
'nachname'=>array(
        
'1'=>'Schubert',
        
'2'=>'Jahn'
    
)
);
fb($test_array'Array $test_array'FirePHP :: INFO);

// Object
$obj=(object) '1';
fb($obj'Object $obj'FirePHP :: INFO);

// Logausgabe
fb('Log bla bla...'FirePHP :: LOG);

// Warnungsausgabe
fb('Warung ...'FirePHP :: WARN);

// Trace
fb('Trace Label'FirePHP::TRACE);
?>

Ausgabe:


Bei der Konsolenausgabe kann man auf ein Array bzw. Objekt klicken und es wird dann automatisch im oberen Fenster das einzelne Array oder Objekt ausführlich und übersichtlich aufgelistet. Dies wird auf jeden Fall immer interessant, wenn man riesengroße verschachtelte Objekte oder Arrays hat. Wenn man den Vergleich zu var_dump(); oder print_r(); sieht, ist dieser gravierend, schon allein durch die farbliche Darstellung, bekommt man in wenigen Sekunden einen wunderschönen Überblick.

Das gesamte Beispiel Script welches hier aufgeführt ist könnte als Ziparchiv herunterladen. Dann müsst ihr euch nicht mehr die Arbeit machen und die einzelnen Dateien zusammen zu kopieren.

Mit diesen Tricks lässt sich die Arbeit mit FirePHP optimieren

Da einige Benutzer immer wieder auf Probleme bei der Verwendung von FirePHP stoßen, sollen an dieser Stelle einige Tipps gegeben werden. Grundsätzlich ist es wichtig zu wissen, dass FirePHP nur mit PHP in der Version 5 zusammenarbeitet. Sollten auf dem Server also noch ältere Libraries zu finden sein, die etwa PHP 4 zuzuordnen sind, wird FirePHP nicht ordnungsgemäß funktionieren.

Gerade im Zusammenhang mit einigen günstigeren Webhosting-Paketen kann es durchaus noch dazu kommen, dass PHP in einer älteren Version eingesetzt wird. In diesen Fällen kann FirePHP für das Debugging nicht genutzt werden. Damit FirePHP in jeder beliebigen PHP-Anwendung genutzt werden kann, ist das Aufrufen von „require('FirePHPCore/fb.php');“ und „ob_start();“ wichtig. Wenn der Core nicht als Pear-Paket installiert ist, könnt ihr euch den Core hier herunterladen und eigenständig per include(); oder require(); integrieren.

Danach kann mit „fb()“ an jeder beliebigen Stelle im Script eine Datenausgabe vorgenommen werden.

Fazit:

FirePHP ist ein leistungsstarkes Tool, wenn es um das schnelle und flexible Debugging von PHP-Anwendungen direkt im Browser geht. Das Tool lässt sich in Browser wie den Firefox mit sehr wenig Aufwand integrieren und beschleunigt die Arbeit von Webprogrammierern deutlich. Die Anwender sollten jedoch bedenken, dass derzeit ohne Firefox ein Einsatz dieses Tools nicht möglich ist. Wer sich also seine Debugging-Arbeit erleichtern möchte, für den führt momentan kein Weg am Browser von Mozilla vorbei.

Eingetragen am 17.06.2012


Schreib ein Kommentar

Name
Mail
Webseite
Kommentar