Codesignal per PHP senden

  • Hallo,


    ich habe erfolgreich meinen Pi als Sender und Empfänger von Signalen für meine Steckdosenleiste eingerichtet. Ich kann per Kommandozeile Signale senden und die Steckdose so steuern. Jetzt soll ein kleines Webinterface her. Apache läuft. Ich habe diese Dateien hier https://raspberry.tips/hausaut…uerung_der_Funksteckdosen genutzt. Die "Ausschalten.php" sieht bei mir aber so aus:


    PHP
    1. <?php
    2. exec("/home/pi/433Utils/RPi_utils/codesend 1049940");
    3. ?>


    Ich verwende nicht raspebrry-remote wie in der Anleitung sondern 433Utils. Ich kann über diesen Befehl über das Terminal erfolgreich die Codes senden. Es geht aber nicht, wenn ich den Button im Webinterface anklicke. Muss das bei PHP anders gemacht werden? Ich habe keine extra PHP-Installation vorgenommen, das scheint schon unter Raspbian vorinstalliert zu sein. Hab es auch mit 'sudo' versucht und Reboot sowie Neustart des Apache nach Änderung der Datei.


    Ich kann den Code auch aus einem Shell-Script im Homeordner ausführen, nur nicht über PHP.

  • Könnte das ein Berechtigungsproblem sein? Soweit ich das verstanden habe, werden Befehle per Webinterface als Benutzer 'www-data' und mit der Gruppe 'www-data' ausgeführt, oder? Das dürfte aber keinen Einfluss auf die Codezeile direkt haben, sondern nur wenn ich die Codezeile in ein Script packe das aber 'pi' gehört.


    EDIT

    Es geht, wenn ich es manuell per


    Code
    1. php Ausschalten.php


    versuche (ohne sudo)


    EDIT2

    Es geht, wenn ich auf ein Script im Homeverzeichnis verweise und dieses Scritp mit sudo in der php ausführe. Dazu muss aber die Datei sudoers editiert werden. Komischerweise geht es auch dann nicht, wenn ich den Benutzer des Scriptes in www-data (auch Gruppe www-data) ändere oder die Rechte auf 777 setze. Geht das auch eleganter ohne sudo?

    Einmal editiert, zuletzt von Richard ()

  • Hallo Richard,


    versuch mal: sudo usermod -aG gpio www-data, damit ist www-data in der Gruppe gpio. Evtl. Server neu starten...


    Und lass bitte die Finger von 777 und sudoers! :shy:

    "Alles, was wir sind, ist Sand im Wind, Hoschi."

  • Ja, so geht es. Hab da noch ein anderes Problem mit PHP. In der index.php steht z. B. drin


    Code
    1. <div onClick="Ausschalten()" class="backbox">Alles ausschalten</a></div>


    Das ist der Eintrag für den "Alles- Ausschalten"-Button. Der geht, auch wenn ich da eigene Kommandos einfüge. Ich bin davon ausgegangen, dass hier durch "Ausschalten()" festgelegt wird, dass nach einer Datei "Ausschalten.php" im gleichen Verzeichnis wie die index.php gesucht wird. Dem scheint aber nicht so zu sein. Ändere ich z. B. die Großschreibung in "ausschalten()" bzw. "ausschalten.php" wird nichts mehr gemacht. Wie lege ich (auch im Hinblick auf eigene Buttons) fest welche Datei mit einem bestimmten Button ausgeführt werden soll?


    Hatte das in dem HowTo schonmal in die Kommentare geschrieben, aber erst danach gesehen, dass dort leider seit 09/2017 keine Fragen mehr beantwortet wurden.