In Laufe der Jahre entschliessen sich immer mehr Kunden und auch die SPE selbst, für die Erstellung von Skripten für Gateways nicht mehr die Skriptsprache Perl zu verwenden, sondern die Sprache PHP. Das hängt vor allem damit zusammen, dass sich jüngere Programmierer im Rahmen ihrer Ausbildung sehr wohl mit PHP aber selten mit Perl beschäftigt haben.
In diesem Beitrag soll nun gezeigt werden, wie sehr elegant in in PHP geschriebenen Skripten nach Fehlern gesucht werden kann. Grundlage dafür ist natürlich eine IDE (Integrierte Entwicklungsumgebung). Microsoft bietet mit dem kostenlosen Produkt Visual Studio Code eine sehr kompakte Alternativ zu mächtigen Entwicklungsumgebungen wie etwa Eclipse oder NetBeans, die wir bisher eingesetzt haben.
Mit Hilfe von Visual Studio Code (kurz VS Code) wird im folgenden gezeigt, wie sich print2forms-Gateway-Skripte effektiv debuggen lassen.
Es wird dazu angenommen, dass VS Code auf dem Rechner läuft, auf dem auch die print2forms-Gateways ausgeführt werden. Prinzipiell ist es auch möglich über das Netz auf einem anderen Rechner zu debuggen. Das ist allerdings aufwändiger zu konfigurieren. Hiweise dazu finden sich weiter unten.
Zunächst muss VS Code auf dem Rechner installiert werden, auf dem der print2forms Client-/Gateway-Service läuft. Für unsere Ansprüche genügt es, wenn die Erweiterung PHP Debug mit installiert wird. Wie das geht, beschreibt die Dokumentation von VS Code.
Als nächstes muss die PHP Installation vorbereitet werden. Es wird eine Erweiterung zum Debuggen benötigt: XDebug. Diese wird häufig bereits mit PHP mitgeliefert (z.B. im XAMPP Paket). Eventuell muss sie allerdings nachinstalliert werden.
Um festzustellen, ob XDebug bereits installiert ist, wird eine Kommandozeile geöffnet, in das Verzeichnis der PHP-Installation gewechselt (in der die php.exe liegt) und dort der Befehl php -i > phpinfo.txt
ausgeführt. Danach kann die entstandende Datei phpinfo.txt mit einem Editor geöffnet werden. Der Inhalt wird nun in die Zwischenablage kopiert und in das Eingabefeld auf der XDebug-WebSite eingefügt. Nach einem Klick auf die Schaltfläche Analyse my phpinfo() output (unten links) erhält man eine Ausgabe, in der steht, ob XDebug installiert ist oder nicht.
Sollte XDebug nicht installiert sein, erhält man - falls man aktuell PHP 7 installiert hat - einen Vorschlag für die korrekte Version der XDebug-DLL. Ansonsten muss man die korrekte Version für die eigene PHP-Installation selbst auswählen. Ist die DLL heruntergeladen, wird sie in den Unterordner ext des PHP-Installationsverzeichnisses kopiert.
Damit PHP von der Existenz des Debuggers weiss, muss in der Datei php.ini im Installationsverzeichnis von PHP eine Änderung vorgenommen werden. In dieser INI-Datei gibt es eine Sektion mit dem Namen [XDebug] (ziemlich am Ende der Datei).
Der Wert für die Konfigurationsvariable zend_extension muss auf den Pfad zur XDebug-DLL gesetzt werden. Etwa:
[XDebug] zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
In der Sektion [XDebug] gibt es weitere - wahrscheinlich auskommentierte - Variablen, die wie folgt gesetzt werden sollten:
xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_host = "127.0.0.1" xdebug.remote_port = 9000
Damit sind die Installationsarbeiten abgeschlossen. VS Code kann jetzt zum Erstellen von Skripten und zur Fehlersuche in PHP-Skripten für print2forms-Gateways genutzt werden.