PHP will Python Script nicht ausführen

  • Hallo Ihr lieben,

    habe mich mal wieder mit dem basteln beschäftigen können.
    Mein aktueller versuch besteht darin eine RGB Led-Leiste anzusprechen.


    Das Pythonscript kann ich unter Python 2 via run ausführen und es funktioniert auch.

    Wenn ich aber die php ausführe passiert nix. habe ich Irgenwo einen Denk oder Schreibfehler der mir noch nicht aufgefallen ist?

    Kleine Zusatzfrage noch nebenbei. Wenn der Pi neugestartet wurde muss ich erst via putty den PiGPIO manuell starten (sudo Pigpio).
    kann man das Automatisieren? (Autostartfunktion beim Pi)

    Ich habe jetzt Testweise folgendes Pythonscript erstellt.

    Code
    #!/usr/bin/env python
    import pigpio
    
    
    pi = pigpio.pi()
    pi.set_PWM_dutycycle(16,000)
    pi.set_PWM_dutycycle(20,000)
    pi.set_PWM_dutycycle(21,250)
    pi.stop()

    Die PHP sieht folgendermasen aus

    PHP
    <?php
    shell_exec("sudo python /var/www/html/blau.py"); 
    header("Location:index.php");
    ?>

    und in der sudoers folgenden Eintrag eingefügt

    Code
    www-data All = NOPASSWD: /usr/bin/python

    Die Rechtevergabe der Datein

    Code
    blau.php -rwxr-xr-x  Besitzer/Gruppe  -  root/root
    
    
    blau.py -rwxr-xr-x     Besitzer/Gruppe  -  root/root
  • Versuch's doch mal mit

    [code=php]
    shell_exec("sudo /var/www/html/blau.py");
    [/php]

    oder

    [code=php]
    shell_exec("sudo /voller/pfad/zu/python /var/www/html/blau.py");
    [/php]
    Automatisch zusammengefügt:
    Nachtrag: Evtl. sicherheitshalber auch sudo mit vollem Pfad?

    Einmal editiert, zuletzt von Manul (6. August 2016 um 15:22)

  • 1. Da du pigpio verwendest brauchst du kein sudo
    2. Da du sudo nicht brauchst, brauchst du auch kein 'visudo' Eintrag.
    3. shell_exec(); hat keine Fehlerbehandlung, nutze stattdessem lieber exec(); siehe dazu FAQ => Nützliche Links / Linksammlung => Befehle über PHP mit root Rechten ausführen (sudo webscript)
    4. Die Dateien gehört root, der Webserver läuft aber über den Benutzer www-data


    PS: /etc/rc.local wird als root ausgeführt und somit auch alle darin befindlichen Befehle. sudo ist dort also überflüssig.
    PPS: python2 und python3 sind voneinander getrennt und haben unterschiedliche Module / Umgebungsvariablen etc, beeinflussen sich also nicht.


    FAQ => Nützliche Links / Linksammlung => PHP: Anleitung zum schalten von GPIO
    FAQ => Nützliche Links / Linksammlung => [Python] Webserver, Websocket und ein bisschen AJAX

  • Guten Abend, danke schonmal für die hilfe bis hier her.... :thumbs1:

    habe dies getestet:

    Code
    shell_exec("sudo /var/www/html/blau.py");
    Code
    shell_exec("sudo /usr/bin/python2 /var/www/html/blau.py");

    Die LED´s nehmen keine blaue farbe an. Funzt also nicht. (leider)

    Den eintrag habe ich gemacht, pigpio startet auch. (man glaubt es nicht, aber ich bekomme etwas hin :s )

    1. Da du pigpio verwendest brauchst du kein sudo Verstanden :D
    2. Da du sudo nicht brauchst, brauchst du auch kein 'visudo' Eintrag. Auch Verstanden :D
    3. shell_exec(); hat keine Fehlerbehandlung, nutze stattdessem lieber exec(); siehe dazu FAQ => Nützliche Links / Linksammlung => Befehle über PHP mit root Rechten ausführen (sudo webscript) Ist auch geändert :D
    4. Die Dateien gehört root, der Webserver läuft aber über den Benutzer www-data <--- kann mich das jetzt an der stelle Aufhalten? und wie behebe ich das am Einfachsten??????? :huh:

    Hier nochmal 2 Screen´s von FileZilla.

    kann mir an der Stelle auch Wordpress einen Strich durch die Rechnung machen???

    MFG Silvio

    1qrsbq.jpg
    2vrsd1.jpg

Jetzt mitmachen!

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