PHP Debugging mit Visual Studio Code, XDebug und IIS unter Windows
Da ich mich unter anderem auch mit dem Erstellen von Webseiten beschäftige und PHP natürlich mit dazugehört, möchte ich euch eine Anleitung mit an die Hand geben, wie Ihr euch die Entwicklungsumgebung so konfiguriert, so das ein unbeschwertes Coden und Debuggen möglich ist. Dieser Beitrag ist dadurch entstanden, weil ich mir selber viele Dinge zusammensuchen musste, um zum gewünschten Ergebnis unter Windows 10 zu kommen. Verzweifelt suchte ich nach dem Fehler, warum PHP-Debug under Vsisual Studio Code nicht an einem definiten Haltepunkt stoppete. Wie üblich lag der der Fehler wieder im Detail.
Benötig werden folgende Komponenten bzw. Konfigurationen
PHP Downloaden
Ladet euch zu erst eine Entsprechende PHP Version herunter. Ihr könnt zwischen 32bit und 64bit Thread Save oder Non Thread Save auswählen. Habt Ihren einen Rechner mit einem Speicher von mehr als 4 GB und ein 64bit Betriebssystem installiert. So muss die Wahl auf eine 64bit PHP-Variante erfolgen. Das Entsprechende PHP-Paket könnt Ihr nun an einen Beliebigen Ordner entpacken. Ich habe es vorzugsweise im Ordner C:\Programme\PHP gepackt, wobei nun zu beachten gibt, das alle Schreibzugriffe nur mit Admin-Rechte ausgeführt werden können. Notiert euch den Pfad, an dem Ihr PHP-Paket entpackt habt.
IIS vorbereiten
Nun geht es darum das der IIS vorbereitet wird. Unter Systemsteuerung->Alle Systemsteuerungselemente->Programme und Features müsst Ihr nun die Internet-Informationsdienste aktivieren. Klickt Knoten mit der Beschriftung „Internetinformationsdienste“ an, Der knoten sollte nun schwarz gefärbt sein. Erweitert bitte diesen Knoten sowie WWW-Dienste und Anwendungsentwicklungsfeatures mit dem Pluszeichen. Aktiviert anschließend die Option CGI. Im Nächsten Stepp solltet ihr den IIS-Manager herunter laden, dazu könnt ihr oben genannten Link verwenden. Mit der GUI könnt ihr dann ganz komfortabel der IIS konfigurieren, denn es müssen noch ein par kleine Einstellungen vorgenommen werden.
Öffnet anschließend den IIS-Manager und klick doppelt auf Handlerzuordnungenen. Auf der Rechten Seite könnt ihr dann eine neue Modulzuordnung hinzufügen, Hierzu einfach den Entsprechenden Menüpunkt auswählen.
Im nächsten Fenster füllt bitte die Eingabe- und Dropdownfelder so wie auf der linken Seite gezeigt aus. Bei der ausführbaren Datei gebt ihr natürlich den Pfad zu euerer PHP-CGI.exe an, den ihr hoffentlich noch wisst 😉 Bei dem Namen überlasse ich euch euerer freien Kreativität. Mit ok wird dann das ganze abgespeichert und der IIS sollte nun für php zum leben erweckt worden sein. Geht zurück in die Verwaltungskonsole. Hier solltet ihr den IIS neu starten.
Nun sollte getestet werden, ob der der IIS richtig für PHP konfiguriert wurde. Öffnet dazu den Editor mit Admin-Rechte und gebt folgende Zeile ein:
<?php phpinfo(); ?>
Diesen kleinen Einzeiler speichert ihr dann unter C:\inetpub\wwwroot\info.php. Als nächste öffnet ihr dann einen Webbrowser euerer Wahl und gibt in der Adresszeile „localhost\info.php“ ein. Sollte nun alles richtig konfiguriert sein, so solltet ihr eine Übersicht über eure PHP-Einstellungen angezeigt bekommen. Jetzt geht es darum Visual Studio Code PHP tauglich zu bekommen. Dazu müsst ihr natürlich erst einmal herunterladen und installieren. Startet Visual Studio Code und ladet euch folgende Erweiterungen mittels des Extensions-Manager herunter, die Anschließenden noch konfiguriert werden müssen.
Öffnet die Einstellung und konfiguriert das JSON folgender maßen. Hier natütlich wieder den Pfad zu euere PHP-Installation
Als letzte müsst ihr noch XDebug in der Version herunterladen, die euerer PHP-Installation entspricht. Diese Version Speichert Ihr dann in dem Extensions-Ordner eurer PHP-Installation ab. Anschliessend öffnet ihr eure php.ini mit Admin-Rechte und
Sucht euch die Zeile heraus, die mit „;extension_dir =“, diese konfiguriert Ihr dann um in: „extension_dir = „C:\Program Files\PHP\v7.1\ext\““. Wobei das führende ;gelöscht wird und der Pfad wieder zu eurer PHP-Installation und dessen Extensions-Verzeichnis zeigen muss. Der Pfad der hier angegeben ist, ist natürlich rein Exemplarisch. Ganz am Ende der Ini-Datei müssen noch folgende Zeilen eingetragen werden:
[PHP_XDEBUG]
zend_extension=php_xdebug.dll
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
Ganz wichtig ist, und das ist auch der Grund dafür, warum die Haltepunkte einfach beim Debuggen übersprungen werden, ist, das XDebug mit zend_extension eingebunden werden muss und nicht nur mittels Extension. Also kleines Detail, große Wirkung.
Jetzt brauch ihr nur noch die PHP-Ini wieder abspeichern und den IIS nochmal neu starten.
In Visual Studio Code sollten die Einstellung für das Remote-Debugging folgende Einstellungen haben. Zu diesen Einstellung gelangt Ihr, wenn ihr auf dem durchgestrichenen Käfer klickt und dann auf das Zahnrädchen. Den Debugger startet ihr dann, wenn auf den grünen Pfeil geklickt wird.
Sollte nun alles richtig geklappt eingestellt worden sein, so wird der Debugger am nächsten Haltepunkt sehen bleiben.