| 

.NET C# Java Javascript Exception

6
Ich bin am Verzweifeln. Ich hab schon einige Erfahrungen mit PHP gesammelt. Objektorientiert programmieren? Kein Problem. Datenbankzugriff? Super einfach. Aber bislang bin ich jedesmal gescheitert, mit XDebug oder Zend Debug PHP-Code zu debuggen, der auf einem Webserver läuft. Irgendwie klappt nie die Verbindung zwischen Debugger und Web-Server. Hat da jemand zufällig den ultimativen Tipp? (IDE ist Eclipse).
28.02.2011
DrPHP 61 3
coole Frage! Wollte auch schon immer mal die "best practice" erfahren.
Mario Priebe 28.02.2011
Welche Version von PHP läuft denn bei Dir, welcher Webserver und welche Version und welche Version von Xdebug versuchst Du zum Laufen zu bekommen?
Torsten Weber 28.02.2011
Vergiss die meine Fragen nach den eingesetzten Versionen, ich habe einfach mal ein Beispiel unten gemacht.
Torsten Weber 01.03.2011
1 Antwort
1
Das ist jetzt zwar nicht unbedingt ein "best practice" aber bei mir hat's funktioniert und ich kann nun in PHP-Dateien steppen und Variablen ansehen. ;-)

Zum Testen habe ich folgende Software-Pakete verwendet:
- Apache HTTP-Server 2.2.17 auf einem W2K3-Server Standard (nicht R2, inkl. allen Updates)
installiert per Installer, nicht manuell mit Standard-Einstellungen
- PHP 5.3.5 (VC9 x86 Thread Safe (2011-Jan-05 21:31:04))
installiert per Installer, nicht manuell mit Standard-Einstellungen

Nach der Installation von PHP musste ich die httpd.conf am Ende noch befummeln, denn der Installer hatte einiges vergessen einzutragen. Hier der Stand nach der PHP-Installation:
PHPIniDir ""
LoadModule php5_module "php5apache2_2.dll"
und jetzt nach meinem manuellen Eingriff nach der Installation:
PHPIniDir "C:/Programme/PHP"
LoadModule php5_module "C:/Programme/PHP/php5apache2_2.dll"

Nach diesem kleinen Eingriff habe ich im Document-Root des Webservers einen Ordner "phpdebugtest" erstellt und in diesen eine index.php mit folgendem Inhalt gelegt:
<?php phpinfo(); ?>

Ein kurzer Test mit dem lokalen Browser und mir wurde wie erwartet die phpinfo angezeigt. Ich konnte nun also PHP-Skripte auf meinem "Quick 'n Dirty"-Webserver hosten.

Dann habe ich die XDebug-Website aufgerufen und die haben dort inzwischen einen sehr genialen Service. Wichtig ist, dass der XDebug-Build zum PHP-Build passt. Das war früher extrem nervig rauszusuchen. Nun ist es deutlich einfacher: Find-Binary
Dort kann man nämlich einfach die vorher im Browser vollständig markierte Ausgabe von phpinfo() einfügen und die Analyse starten. Das Skript stellt einem dann direkt den korrekten Download bereit. Ausserdem wird dort noch beschrieben, wo die Datei hinkopiert werden muss und welche Zeile am Ende der PHP-INI angefügt werden muss. Ein abschliessender Restart des Webservers brachte Erfolg, XDebug war installiert.

Auf der Eclipse-Website habe ich mir die aktuellste PDT-Version geladen:
Eclipse-Downloadseite
Die Hinweise zum PHP-Debugger auf dieser Downloadseite habe ich professionell ignoriert, weil ich XDebug ja schon installiert hatte.

Eclipse PDT (steht für PHP Developments Tools) entpackt und direkt gestartet, den Workspace bestätigt, ein neues PHP-Projekt mit dem Namen "phpdebugtest" angelegt und die obligatorische index.php erzeugt. Diesmal aber nicht mit der phpinfo sondern eine Schleife in der ich einen Haltepunkt gesetzt habe. Hier der Codeschnippsel:
<?php
for( $i = 0; $i < 10; $i++ )
{
$i++;
echo 'Dies wird ein Haltepunkt!';
}
?>

Nachdem ich nun diese Datei auch auf den Webserver kopiert und den Debug-Vorgang gestartet hatte, tat sich erstmal nichts. Genaugenommen startete der Vorgang bis 57% und blieb dann stehen. Es wurde auf eine Verbindung zum Debugger gewartet. Ich hatte vergessen, dass Remote-Debugging in der PHP-INI auf dem Webserver zu aktivieren:
[XDebug]
xdebug.remote_enable=true
xdebug.remote_host=192.168.1.50

An dieser Stelle wird dem Debugger mitgeteilt, ob und mit welchem Debug-Client er sich verbinden darf/soll. Webserver-Restart und erneut in Eclipse den Debug-Vorgang gestartet - Erfolg!

Hoffe das hilft Dein Problem einzugrenzen oder vielleicht sogar zu lösen.
28.02.2011
Torsten Weber 691 1 8

Stelle deine Php-Frage jetzt!