Pythonscript mit Variabele an php Script

  • Hallo liebe Forenfreunde,

    Ich habe gerade ein kleines Problem.

    Möchte aus Python ein php script aufrufen mit Übergabe einer Variable.

    Die Zeile sieht so aus :

    Code
    os.system( "php /var/www/html/garten/Getstate_EA.php" )

    so habe ich keine Probleme das funktioniert, aber ich möchte es erweitern um eine Variable.

    Im script Getstate_EA.php wird die Variabele über $gpio = $_GET['gpio']; übernommen.

    Die Variable ist eine Zahl. (Der entsprechende GPIO-Port

    Kann mir einer sagen, wie ich die Zeile abändern muss?

  • Nimm requests und nicht exec.

    Er hat keinen Webserver. Vielleicht... Er ruft das php-Script direkt mit dem Interpreter auf.


    Aber warum steuerst du den GPIO nicht direkt mit Python??

    Die Frage wollte ich auch stellen :D

    Generell ist die Verwendung von os.system abzuraten. Es ist unsicher und man kann nicht auf STDOUT und STDERR zugreifen. Das einzige, was zurückgeliefert wird, ist der RETURNCODE des Prozesses. Unsicher ist die Funktion deswegen, da der Shell die Interpretation des übergebenen Strings überlassen wird, was Tür und Tor für Manipulation öffnet. Den gleichen Effekt hat man, wenn man subprocess.Popen mit dem shell=True nutzt.

    Lösung:

    Das ist aber alles blödsinn, da Python auch auf die GPIOs zugreifen kann.

    Damit schießt du dir nur ins eigene Knie.

    Wenn aber ein lokaler Webserver läuft, wieso nutzt du dann nicht den HTTP-Get-Request?

  • Mit GET sieht der Code so aus:

    Du verwechselst das Verzeichnis mit dem Hostnamen. Wenn, dann localhost und falls garten der Hostname ist, muss auch die Namensauflösung funktionieren. Weiter oben hast du aber die richtige URL gepostet.

    Es waere aber immer noch besser den Pin direkt mit Python zu lesen

    Ja klar. Mir ist es egal in welcher Sprache, aber gerade als Anfänger sollte man nicht 10 Sprachen auf einmal einsetzen.

  • WoW

    Danke für die vielen informationen.

    @DeaD_EyE

    Du hast Recht, ich bin noch ein Anfänger. Bis jetzt habe ich mich mehr oder weniger mit PHP gearbeitet und jetzt fange ich mit Python an.

    Und du hast auch recht, ich habe auf den Raspberry auch ein Webserver laufen.

    @Tell

    Auch deine Argumente sind richtig. Teilweise schalte ich auch die GPIO Ports auch direkt in Python. Aber bei manchen Sachen, da schalte ich nicht nur den Port alleine, da hängt noch einiges hinterher was innerhalb der PHP Datei abgearbeitet wird. Und der Webserver ist schon länger fertig und läuft auch sauber. Dies ist jetzt nur eine Erweiterung die ich mache. Da war es für mich einfacher, das vorhandene PHP script aufzurufen und nur zusätzlich die Variable mit zu übergeben, als alles noch mal neu zu schreiben.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!