kann GPIO-Pin mit PHP-Befehl nicht ansteuern

  • Hallo,


    ich habe ein Problem mit dem folgenden PHP-Befehl:

    Code
    shell_exec("echo \"1\" > /sys/class/gpio/gpio26/value");

    mit diesem PHP-Befehl wird der entsprechende GPIO nicht eingeschaltet.

    Wenn ich den Befehl:

    Code
    echo 1 > /sys/class/gpio/gpio26/value

    direkt auf der Konsole eingebe, wird der entsprechende GPIO26 eingeschaltet. Die benötigten Einstellungen habe ich vorher eingestellt.


    Mit diesem PHP-Befehl:

    Code
    shell_exec("/usr/local/bin/gpio -g write 26 1");

    funktioniert mein PHP Skript.


    Warum funktioniert bei mir nicht auch der erste PHP-Befehl.

    Ich verwnde Raspian-Stretsch.


    MfG


    Juergen B.

    :?:

    Edited once, last by jbaben: Ich habe versucht den Beitrag als "erledigt" zu kennzeichen. ().

    • Official Post

    Der zweite Befehl funktioniert, was imho bedeutet Du hast den User www-data in die Gruppe gpio hinzugefügt. Richtig?


    Wenn der erste Befehl im CLI / Konsole funktioniert, dann greifst Du als root darauf zu oder hast an den Rechten geschraubt, denn /sys/class/gpio/* gehört soweit ich mich erinnere dem User root.


    Wie Du siehst kann man nur raten was Du bisher gemacht hast. :denker:

  • Hi,

    interessant wäre die Frage, ob der Eintrag in sysfs überhaupt vorhanden ist ...

    oops ... übersehen

    direkt auf der Konsole eingebe, wird der entsprechende GPIO26 eingeschaltet. Die benötigten Einstellungen habe ich vorher eingestellt.


    denn /sys/class/gpio/* gehört soweit ich mich erinnere dem User root.

    Das würde schon passen ... owner root/group gpio


    Code
    -rwxrwx--- 1 root gpio 4096 Jul 29 13:27 /sys/class/gpio/gpio17/value


    //EDIT: nimm' mal exec() statt shell_exec() ... dann kannst Du über den Rückgabewert die Fehlerursache feststellen -> http://php.net/manual/de/function.shell-exec.php


    cu,

    -ds-

  • Hallo,

    so der erste PHP-Befehl funktioniert nun.

    Das lag wie ihr vermutet habt an den geänderten Rechten.

    Muss das Skript für die Einstellung der GPIO's in /sys/class/gpio noch prüfen.

    Habe folgende Seite gefunden GPIO-Steuerung in PHP-Scripts

    und daraus folgendes angewendet:

    Code
    sudo adduser www-data gpio
    sudo systemctl restart apache2

    Danke für Eure schnelle Hilfe.


    MfG


    Juergen B.