==== 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 (c4p)-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 (c4p) 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 (c4p)-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! { "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. \\ \\ {{convert4print:tips:0072-1.gif}} \\ \\ === Hinweise === * Der Eintrag mit dem Index 0 im Argument-Vektor ist natürlich wie üblich der Pfad und der Name des Skripts. Die eigentlichen Parameter fangen mit dem Index 1 an. * Bei dieser Art der Fehlersuche sind die Lizenzschlüssel für eventuell genutzte Hilfsprogramme eine gewisse Herausforderung. Am besten, man lässt das Gateway einmal einen Auftrag bearbeiten. Ist in der Kommandozeile irgendwo der Parameter ''(sp)%K(sp)'' angegeben, und in der Konfiguration des Gateways wurde die Ablaufverfolgung aktiviert, kann man aus dieser den Lizenzschlüssel herauskopieren.\\ \\ Allerdings sind in den Lizenzschlüsseln Zeitstempel enthalten, die sie nach einer gewissen Zeit ungültig machen. In der Regel ist die Gültigkeitsdauer eines Schlüssel etwa drei Stunden. Wird also länger nach einem Fehler gesucht, kann es unter Umständen notwendig werden, sich einen neuen Lizenzschlüssel zu besorgen. Man erkennt abgelaufene Schlüssel an den Rückgabewerten der aufgerufenen Hilfsprogramme.