PHP-Skript ohne Gateway testen

Nicht immer möchte man ständig Druckaufträge erzeugen müssen, um ein PHP-Skript zu testen. Gerade in der Anfangszeit eines Skriptes, wenn noch jede Menge Syntaxfehler vorhanden sind, wird das ganz schnell lästig.

Als Alternative dazu kann man die PHP-Skripte auch einfach lokal im VS Code testen. Der Schlüssel dazu ist ein andere lauch.json-Datei.

Knackpunkt beim lokalen Testen ist die Übergabe der Parameter an das Skript. Je nach Art des Skripts müssen unterschiedliche Arten und Mengen von Parametern übergeben werden. Das steht letztlich in der Kommandozeile des print2forms-Gateways und muss hier nachgebildet werden. Als Beispiel mag hier herhalten:

php "%1/sign_2.php" "%1" "%2" %4 %K

Das Skript erwartet also vier Parameter, wobei aufgrund der Kenntnisse über print2forms klar ist, dass die ersten beiden Parameter der Pfad des Skriptverzeichnisses und der Pfad des Spool-Verzeichnisses, in dem sich die Druckaufträge befinden, sind. Die Parameter sind in Hochkommata eingefasst, weil sie prinzipiell auch Leerzeichen enthalten dürfen. Der dritte Parameter ist der Name der vom Gateway erzeugten Datei(en). Der letzte Parameter ist ein Lizenzschlüssel, der die Nutzung diverser print2forms-Hilfprogramme freischaltet.

In der launch.json muss nun ein Argument-Vektor mit den vier Werten für die Parameter mit angegeben werden. Dieser Vektor hat den Namen args. Bei der Angabe der Pfade ist unbedingt darauf zu achten, dass als Trenner für die Ordnerebenen ein Backslash verwendet werden muss. Der ist natürlich aufgrund der Javascript-Regeln zu verdoppeln, weil er in Zeichenketten als Fluchtsymbol dient.

Dies ist deshalb so wichtig, weil innerhalb des PHP-Skripts diese Pfade eventuell an externe Windows-Programme übergeben werden (mittels der PHP-Funktion system), und diese erwarten nun einmal Backslashes.

Anders dagegen beim Pfad zum PHP-Interpreter, der unter dem Namen runtimeExecutable angegeben werden muss, da dieser Pfad nur intern in VS Code genutzt wird. Diese Angabe ist selbst dann notwendig, wenn der Pfad zum PHP-Interpreter Bestandteil der systemweiten Environment-Variablen PATH ist!

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Lokal",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${workspaceFolder}",
            "runtimeExecutable": "C:/xampp/php/php.exe",
            "args": ["C:\\sign2forms\\Script",
                     "C:\\sign2forms\\Work",
                     "00043805_30_-0.6437_c.jpg",
                     "63Te1HwGRbojfsJtR7wFMiGONDrcny5hnfHZoKUNnq5f"],
            "stopOnEntry": false
        }
    ]
}

Mit der Angabe unter cwd wird das Arbeitsverzeichnis für das Skript gesetzt, und stopOnEntry entscheidet darüber, ob die Ausführung des Skripts unabhängig von Haltepunkten gleich mit der ersten Zeile des Skripts stoppt.

Es ist ohne weiteres möglich, diese Konfiguration zusammen mit der Standardkonfiguration in einer einzigen launch.json aufzunehmen. Beim Start des Debuggers ist dann allerdings darauf zu achten, dass die richtige Konfiguration - erkennbar am Namen - ausgewählt wird.



Hinweise