PHP Variablen an ein Python Script übergeben

Nachdem im ersten Teil der Apache für Python Script fit gemacht wurde, kommen wir jetzt zur Implementierung. Ich muss gestehen, dass ich von PHP deutlich mehr Ahnung habe, als von Python, aber auch als Python-Newbie oder jemand, der eventuell ein fertiges Script einbinden muss, ist es sicherlich hilfreich.

PHP Script erstellen

Es werden 3 Variablen definiert, die ich später in meinem Python Script ausgeben möchte. Die PHP Funktion exec ruft ein externes Programm auf. Ich bin mir nicht sicher, ob es ein Windows Problem ist, aber einfach “python test.py” usw führte zur Fehlermeldung, dass der Befehl “python” Windows angeblich nicht bekannt sei. Mit der Angabe des absoluten Pfades zur python.exe habe ich dies umgangen. (Unter Linux war das übrigens nicht nötig…) Da exec zwei optionale Parameter hat, u.a. output, nutze ich diesen ebenfalls. Ich will ja schließlich auch wissen, ob das Python Script das tut, was ich möchte.
MIt print_r wird dieser Output schließlich ausgegeben.

Das Python Script

Auch wenn man, so wie ich, nicht wahnsinnig viel Ahnung von Python hat, sollte doch leicht zu erfassen sein, was hier passiert.
Die erste Zeile gibt an, welcher Interpreter mit dem Script gefüttert werden soll. Hier also der absolute Pfad zur python.exe. Die Angabe des Content-Types ist erforderlich, da sonst ein Fehler geworfen wird, der auf einen fehlenden oder unvollständigen Header hinweist. Die beiden \n erzwingen einen Zeilenumbruch um das Ende des HTTP Headers und den Beginn des Bodys zu definieren. Anschließend wird die Anzahl der Parameter, sowie eine Liste dieser ausgegeben.
Ruft man schlussendlich das PHP Script auf, wird die Anzahl der Parameter mit 4 benannt, obwohl nur 3 Variablen übergeben wurden. Warum das so ist, erschließt sich direkt in der nächsten Zeile. Dort fällt auf, dass der Name des Python Scripts, an erster Stelle (Index 0) im Array steht.

Resumée

Im Prinzip ist es gar nicht so schwierig. Ich hatte auch den Eindruck, dass es unter Windows mehr Stolpersteine als unter Linux gab. Bei Linux stimmen am ehesten die Berechtigungen des Python Scripts nicht. Dort muss beachtet werden, dass es mit der executable Berechtigung versehen wird.
Sämtliche Fehler werden im Apache Error-Log geschrieben. Sollte man irgendwo feststecken, findet sich hier sicherlich die Lösung.

Zu Teil 1 

Ein Gedanke zu „PHP Variablen an ein Python Script übergeben

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*