Python in PHP mit Javascript ausführen

  • Hallo zusammen,

    ich habe jetzt schon wirklich eine Weile im Forum recherchiert, aber ich bekomm es leider einfach nicht hin, deswegen hier mein Problem.

    Ich möchte eine Python-Datei auf dem Raspberry Pi 3 ausführen.

    Dazu öffne ich diese mit Hilfe von einem PHP Script und das funktioniert auch schon, wenn ich die PHP Datei mit dem Terminal aufrufe.

    Alle Dateien liegen übrigens im Verzeichnis /var/www/html.

    PHP
    <?php
    exec('sudo python python.py');
    ?>

    Diese PHP Datei möchte ich jetzt von der LOCALHOST Website aus, mit Hilfe von einem Button starten:

    Ich habe jetzt schon wirklich alles ausprobiert um die PHP Datei zu starten, leider passiert beim Drücken des Buttons aber rein gar nichts.

    Ich hoffe jemand von euch kennt die Lösung, weil ich jetzt schon echt lange dran sitze und mir eigentlich keine Hilfe holen wollte.

    In dem Sinne vielen Dank im Vorraus!

    LG Luca

    • Offizieller Beitrag

    Der Webserver (www-data) darf kein sudo. Wenn Du das im Terminal ausführst, dann machst Du das vermutlich als User pi, der darf sudo verwendenund deshalb funktioniert es dort auch.

    Sind root-Rechte überhaupt zum Ausführen des Python-Skripts nötig? Warum machst Du nicht gleich alles in Python, statt dem Mischmasch mit PHP?

    //Edit

    Fast vergessen... Willkommen im Forum! ;)

  • Kannst du denn dein test.php vom Browser direkt per URL aufrufen? Solange das nicht geht, kann es auch von Javascript nicht gehen. Wenn das geht, dann liegt das Problem im JS begruendet.


    Und dann schliesse ich mich natuerlich meinen Vorrednern an: ich denke nicht, dass du PHP hier ins Spiel bringen solltest, sondern dein Problem nur mit Python und einer Webseite, die du auch von Python aus ausliefern lassen kannst, loesen.

  • Der Webserver (www-data) darf kein sudo. Wenn Du das im Terminal ausführst, dann machst Du das vermutlich als User pi, der darf sudo verwendenund deshalb funktioniert es dort auch.

    Sind root-Rechte überhaupt zum Ausführen des Python-Skripts nötig? Warum machst Du nicht gleich alles in Python, statt dem Mischmasch mit PHP?

    //Edit

    Fast vergessen... Willkommen im Forum! ;)

    Ich weiß es tatsächlich gar nicht, haha..

    Wie würde das denn genau funktionieren?

    Vielen Dank!

  • In dem von dir verlinkten Thema wird das Gegenteil ausgedrückt - wenn am Ende Python steht, nimm es auch gleich ganz, und lass PHP weg.

  • Um das nochmal klar zu machen: JavaScript kann weder direkt Python Skripte ausführen, noch PHP. JavaScript läuft im Browser. Da kann und darf man nichts ausführen. Es kann IMMER nur ein HTTP Request abschicken. Und dessen Antwort auswerten. Und das HTTP request wird von einem HTTP Server verarbeitet. Und der kann in PHP geschrieben sein, oder in Python. Und wenn man am Ende eh Python ausführen will, dann lässt man die unnötige und verkomplizierende PHP Schicht weg. Und das wird in dem Thema so diskutiert.

  • Um das nochmal klar zu machen: JavaScript kann weder direkt Python Skripte ausführen, noch PHP. JavaScript läuft im Browser. Da kann und darf man nichts ausführen. Es kann IMMER nur ein HTTP Request abschicken. Und dessen Antwort auswerten. Und das HTTP request wird von einem HTTP Server verarbeitet. Und der kann in PHP geschrieben sein, oder in Python. Und wenn man am Ende eh Python ausführen will, dann lässt man die unnötige und verkomplizierende PHP Schicht weg. Und das wird in dem Thema so diskutiert.

    Okay, Dankeschön! Das habe ich jetzt auf jeden Fall mal verstanden. Ich hab jetzt nur leider keine Ahnung was ich tun muss, dass das Ganze funktioniert..

  • Du kannst aus einem Javascript einen AJAX Aufruf machen, der in PHP geschrieben ist und somit einfach eine python Datei aufrufen kann. Oder auch direkt über XMLHttpRequest eine eigene PHP Seite aufrufen, wo du dein Python etc. ausführen kannst und auch wieder Werte zurück an die Webseite übergeben bzw. versenden kannst.

    Also Lösugen gibt es genügend dafür und auch nicht sehr kompliziert :)

    Einmal editiert, zuletzt von oytschi (28. Juni 2020 um 11:36)

  • oytschi AJAX und XMLHTTPRequest sind das gleiche, und PHP in the Middle ist wieder die gleiche Sackgasse wie zu Beginn.

    lucawarvergeben hier gibt es diverse Beispiele zb von Flask & JavaScript. Flask ist ein python web framework.

  • oytschi AJAX und XMLHTTPRequest sind das gleiche, und PHP in the Middle ist wieder die gleiche Sackgasse wie zu Beginn.

    lucawarvergeben hier gibt es diverse Beispiele zb von Flask & JavaScript. Flask ist ein python web framework.

    Okay Danke dir, ich bin leider echt noch nicht so versiert, was das hier angeht. Könntest du mir da vielleicht einfach ein Beispiel zeigen, oder etwas ähnliches, weil es für mich gerade echt schwierig ist das als Ganzes zu sehen.

  • Hast du mal selbst gesucht? Es gibt diese Beispiele hier, genauso wie es die Diskussion gab, die du selbst zitiert hast.

  • Ja, ich bin jetzt wirklich schon mehrere Tage daran einfach alle Forumeinträge durchzulesen. Ich glaube ich verstehe das selber einfach nicht genug, um mir daraus die Informationen zu holen die ich brauche..

  • Ja das ist mir schon klar, das erwarte ich auch überhaupt gar nicht.

    Mein Problem ist jetzt, dass ich nicht verstehe wieso ich die PHP Datei, welche im /var/www liegt und die Python Datei ausführt durch das Terminal aufrufen kann, aber wenn ich die selbe Datei im Browser per Localhost starte überhaupt nichts passiert. Gibt es da keinen einfacheren Weg, um die Datei auf die Art auszuführen?

  • Das hat etwas mit Berechtigungen zu tun. Der Apache-User www-data darf das halt nicht. Du kannst dem das Recht geben (ihn die sudoers packen), und dann ist dein Problem scheinbar geloest.

    Bis du auf die Idee kommst, Werte aus dem Python-Skript ploetzlich zurueckgeben zu wollen an deine Webseite. Und dann stehst du wieder vor der Wand, und hast immer noch nicht die Dinge gelernt, die du eigentlich jetzt lernen musst.

    PHP ist einfach keine Technologie, in der man ein solches System neu anfaengt, weil es in vielen Beziehungen veraltet ist.

Jetzt mitmachen!

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