
Ich habe hier im Moment eine ziemlich komische, historisch gewachsene, Infrastruktur. Mein Entwicklungsrechner ist Windows, auf dem der Entwicklungsserver in einer VM läuft. Dieser wiederum exportiert /var/www mittels Samba an den Windows-Rechner. Da ich mal ein Projekt in Symfony umsetzen wollte, hatte ich gestern sage und schreibe 6h Alarm um alle Features von PhpStorm ans Laufen zu kriegen. Hauptproblem war die Nutzung von PHP als CLI auf dem Windowsrechner über den Samba-Share hinweg auf dem Entwicklungsserver. Was sich allerdings auch als problematisch erwiesen hat war die Nutzung des Debugging in PhpStorm. Das lag nicht so sehr an PhpStorm, sondern an PHP auf dem Server.
Ich hab den Debug-Server als „Remote Web Application“ gemäß Anleitung in PhpStorm angelegt, aber es war mir nicht möglich Breakpoints anzulegen. Die Anwendung wurde ohne Pause ausgeführt. Schnell war auch klar, das einem das Chrome-Plugin von JetBrain an der Stelle nichts nützt, da PHP ja serverseitig ausgeführt wird, und Chrome davon eh nichts mitbekommt. Die xdebug.so kann an der Stelle falsch in die php.ini eingebunden werden!
Das richtige Einbinden der xdebug.so
Da Xdebug ja in der Regel als .so Datei vorliegt, kann sie ganz einfach über die php.ini eingebunden werden! Normalerweise würde das so passieren:
extension = xdebug.so
Dies ist falsch und funktioniert NICHT. Lustigerweise wird es von den meisten Unix-Derivaten die ich ausprobiert habe, exakt so automatisch eingebunden. Dies funktioniert zwar für den geänderten var_dump(), nicht aber für das reine debugging. Stattdessen muss die Datei wie folgt eingebunden sein:
zend_extension = xdebug.so
Die Konfiguration von Xdebug in der php.ini
PhpStorm gibt an der Stelle nach wie vor keinen Ton bzgl. Debugging von sich, Xdebug muss in der php.ini noch entsprechend konfiguriert werden. Mit der folgenden Config funktioniert es bei mir einwandfrei:
[XDebug]
zend_extension="/usr/local/lib/php/20100525/xdebug.so"
xdebug.max_nesting_level = 250
xdebug.remote_enable=1
xdebug.remote_host="192.168.2.10"
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp"
Ärgert mich ein bisschen das ich das auf einen Entwicklungsrechner festsetzen musste, aber na gut, geht jetzt zumindest. Ist eine wunderbare Sache und erinnert mich ganz immens an die Zeiten von Turbo Pascal. Wenn ihr das Ganze anders ans Laufen bekommen habt, oder noch weitere Optimierungs-Settings von Xdebug habt, würde ich mich über einen Kommentar freuen – ich bin mir nämlich sicher das dies noch nicht der Weisheit letzter Schluss ist.
Hi,
ich bin zwar nicht in der PHP- sonder eher in der Perl Welt zuhause hatte jedoch ein ähnliches Problem.Als IDE benutze ich Komodo. Ich habe es, da ich sowieso die Dateien remote editiere, mittels ssh gelöst.
ssh -R 9000:localhost:9000 USER@HOST
Du könntest dann in der php.ini folgendes eintragen
[XDebug]
xdebug.remote_host=“localhost“
Das hat ausserdem den Charme das die Kommunikation verschlüsselt ist.
Vielleicht ist das auch was für dich…
mit freundlichen Grüßen
Martin Wildgruber