Wenn mit DevSense in Visual Studio ein PHP-Projekt im Debugger gestartet wird, dann öffnet er den System-Browser mit einer URL à la:
http://localhost:12345/index.php?XDEBUG_SESSION_START=647F69A6
Wenn ich in einem anderen Browser (oder z.B. auch mit cURL oder wget) die URL ohne den XDEBUG_SESSION_START
-Parameter aufrufe, wird zwar die Seite angezeigt, jedoch hält der Debugger bei keinen Haltepunkten.
Lösung
Diesen Eintrag in der php.ini-Datei ergänzen:
xdebug.remote_autostart = 1
(Quelle 1, Quelle 2 im DevSense-Handbuch)
In DevSense geht das ganz einfach:
Project → Properties → Server → Configuration file → php.ini-Link anklicken.
Update 1
In meinen Tests hat das nur mit PHP 7.1.1 und PHP 7.1.2 funktioniert. Mit PHP 7.1.10 hat es nicht funktioniert, dort wurden Haltepunkte nicht mehr angesprungen.
Ich bin noch am Forschen, ob es ggf. an unterschiedlichen PHP.INI-Dateien liegt.
Hier ist ein Auszug aus der PHP.INI-Datei:
[XDEBUG]
zend_extension="C:\Program Files (x86)\IIS Express\PHP\v7.1.2\ext\php_xdebug.dll"
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.remote_mode = req
xdebug.remote_autostart = 1
Eventuell habe ich ja die falsche „php_xdebug.dll“-Datei (z.B. falsche MSVCRT-DLL oder falsche Bitness) verwendet?
Update 2
Ich hatte auch schon den Fall, dass Haltepunkte nicht erreicht wurden, selbst wenn direkt mit dem gestarteten Browser aufgerufen wurde, weil ich in meinem speziellen Fall eine PHAR-Datei im Root-Ordner des Projekts abgelegt hatte, die das Archiv des Projekts selbst war.
Mein Code ist dann so aufgebaut gewesen, dass wenn es eine PHAR-Datei im Root mit dem Projektnamen gibt, diese geladen wird. Ansonsten wurden die un-ge-PHAR-ten PHP-Dateien ausgeführt.
Die Lösung war dann einfach die PHAR-Datei zu löschen.
Update 3
Ggf. hilft auch ein Blick in „Most Common Issues“ im Debugging-Troubleshooting-Kapitel auf der DevSense-Website.