HTML: PHP gibt nur Inhalt von Pyhton wieder!

  • Hallo zusammen :)


    Ich habe bereits gesehen, dass einiges dazu im Forum steht, jedoch sind bei mir noch einige Fragen offen geblieben.


    Ich will ein Pythonskript über einen Button auf einer Website ausführen.


    Die Seite sieht bisher wie folgt aus:


    HTML
    <html>
    <head>
    </head>
    <body>
    <form action="test.php" method="post">
       <p> Licht Wohnzimmer </p>
          <button> <img src="onbutton.png" … /></button>
    </form>
    </body>
    </html>


    Der Inhalt von test.php:


    PHP
    <?php
    
    
    exec('/var/www/button1on.py');
    
    
    ?>



    Wenn ich nun aber auf den Button klicke, erscheint nur der Inhalt von test.php und button1on.py selbst wird auf dem Pi gar nicht erst ausgeführt.


    Mache ich hier etwas falsch?


    Liebe Grüße

  • Benutzt das Python Script CGI? Dann muss es auch in einem Verzeichnis stehen, was im Apache für CGI konfiguriert ist.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • So sieht das Pythonskript aus:



    Was ist der Standartpfad für CGI?
    Das Skript soll also dann in diesen Pfad?


    Liebe Grüße

    • Official Post

    Wenn, dann heisst das SheBang ;) und stellt die erste Zeile eines jeden scripts dar welche definiert welcher interpreter für das script verantworlich ist. Im Fall con python wäre es.
    #!/usr/bin/env python


  • #!/usr/bin/env python


    Besser ist noch

    Code
    #!/usr/bin/env python 
    #-*- coding: utf-8 -*-

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

    • Official Post

    da hat der gute framp natürlich recht. Obwohl ich, grade unter Windows, gerne mal Probleme mit UTF-8 habe. Schaden tut es auf jedenfall nie und definiert einen wünschenswerten Ausgangszustand.


    Ich hab immer Angst wenn es um php und exec geht. mod_wsgi leistet mir hier gute dienste.


  • Wie bitte?
    Ich bin leider ein totaler Neuling in Python... :(


    Hi,


    da dein Vorhaben vermutlich sowieso anfangs scheitern wird, möchte ich Dir weitere Suchaktionen ersparen und gleich hierher verweisen.
    Damit ist den Folgeproblemen (ACCESS DENIED, sudo ...) gleich ein Riegel vorgeschoben.


    Ich möchte Dich aber bitten, den Thread aufmerksam bis zum Ende durchzulesen, damit Du keine Sicherheitslecks in Dein System einbaust.


    cu und viel Erfolg,
    -ds-

  • Danke erstmal :)


    Nun sieht mein PHP-Skript wie folgt aus:


    PHP
    <?php
    
    
    echo shell_exec("sudo python /var/www/button1on.py");
    
    
    ?>


    Hier der Inhalt des Python-Skripts:



    www-data hat die entsprechenden Rechte erhalten.


    Trotzdem sehe ich nur den Inhalt des Python-Skripts, wenn ich auf den Button klicke.


    Jemand eine Idee :(?


    Liebe Grüße

    • Official Post

    So, ich hab jetzt mal ein test gemacht.
    unter /var/www/ einen datei namens test.php angelegt:
    Inhalt

    PHP
    <?php                                                                                                                                                                                                                                                                       
    echo shell_exec("python /var/www/test.py");                                                                                                                                                                                                                                                                      
    ?>


    Dann eine Datei namens test.py, ebenfalls in /var/www
    Inhalt:

    Code
    for x in range(10):
        print x


    anschliessend ein chown -R ww-data:www-data /var/www
    ausgabe von IP/test.php
    0 1 2 3 4 5 6 7 8 9
    [hr]
    arg.....irgendwas ist jetzt kaputt mit meinem Post, ich kann nicht mehr editieren.
    Egal: sobald ich es als sudo versuche, klappt das nicht, ist imho ein bekanntes Problem von shell_exec.

  • Quote


    Egal: sobald ich es als sudo versuche, klappt das nicht, ist imho ein bekanntes Problem von shell_exec.


    Wem ist das bekannt?
    Das Problem ist die falsche Verwendung von sudo. Hast Du dem Benutzer unter dem Dein Webserver läuft dir Rechte für sudo gegeben? (nicht daß man das machen sollte).



  • Hand aufs Herz ... hast Du den Thread den ich verlinkt hatte, wirklich gelesen?
    Da steht imho alles drin, was zu tun ist.


    cu,
    -ds-

  • Hand aufs Herz ... hast Du den Thread den ich verlinkt hatte, wirklich gelesen?
    Da steht imho alles drin, was zu tun ist.


    cu,
    -ds-


    Gerade jetzt ein zweites Mal.


    Probeweise habe ich www-data mal in die sudoers-Datei mit reingeschrieben.
    Anschließend habe ich mich mit Putty mit dem Benutzer www-data folgende Kommandozeile eingetippt:


    Code
    sudo python /var/www/button1on.py


    Das funktioniert einwandfrei.


    Über den Button selbst wird wieder nur der Inhalt des PHP-Skripts angezeigt.


    Hilfe :s



  • Sorry - ich glaub da stand ich jetzt ein bisschen auf der Leitung ... lesen bildet :blush:


    Hast Du die php-Unterstützung für Apache installiert?
    Vermutlich nicht - guck mal in die Tutorials ...


    cu,
    -ds-

  • Das fehlende Modul war des Rätsels Lösung...


    Ein "sudo apt-get install php5 libapache2-mod-php5" und dann ein "sudo service apache2 restart" hat Abhilfe geschaffen.


    Vielen Dank für eure Hilfe :)