maxpain
Goto Top

PHP Script Probleme beim Ausführen von ShellExec Commands

Guten Abend zusammen,

bezüglich PHP-Scripting habe ich derzeitig ein Problem.

Ich möchte gerne auf meinem Raspberry Pi 3 ein PHP Script laufen lassen, welches ich über einen Client im Netzwerk (OS egal) aufrufe und dann über hinterlegte "Buttons" ein Shell/Terminal Befehl ausführe.
Explizit handelt es sich hierbei um eine Lichter/Mediensteuerung via Funksteckdosen und 433MHz Sender (Quelle: https://tutorials-raspberrypi.de/raspberry-pi-funksteckdosen-433-mhz-ste ..).
Das ganze ist bereits umgesetzt und funktioniert einwandfrei, auch das PHP-Script ist soweit fertig.
Nachfolgend der Code meines PHP Skriptes:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
    <title>Geraetesteuerung</title>
    <style type="text/css" media="screen">  

    table {
    border-collapse: collapse;
    width: 250px;
}

table, th, td {
    border: 1px solid black;
    text-align: left;
}

    </style>
  </head>
  <body>
    <div>
        <h1>Raspberry Pi Steckdosen Steuerung</h1>
        <table border=1>
          <tr>
            <th>Steckdose</th>
            <th>An/Aus schalten</th>
          </tr>
          <tr>            
<td>Steckdose 1</td>
            <td><a href="?id=1.1" target="_self">An</a> - <a href="?id=1.0" target="_self">Aus</a></td>  
          </tr>
          <tr>
            <td>Steckdose 2</td>
            <td><a href="?id=2.1" target="_self">An</a> - <a href="?id=2.0" target="_self">Aus</a></td>  
          </tr>
          <tr>
            <td>Steckdose 3</td>
            <td><a href="?id=3.1" target="_self">An</a> - <a href="?id=3.0" target="_self">Aus</a></td>  
          </tr>
        </table>

        <?php
        if (isset($_GET["id"])) {  
          $id = $_GET["id"];  

          if($id == "1.1") {  
            echo "execute ";  
            echo shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 1 1");  
            echo "done";  
          } elseif ($id == "1.0") {  
            echo "execute ";  
            echo shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 1 0");  
            echo "done";  
          }

        if($id == "2.1") {  
            echo "execute ";  
            echo shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 2 1");  
            echo "done";  
          } elseif ($id == "2.0") {  
             echo "execute ";  
            echo shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 2 0");  
            echo "done";  
          }
	if($id == "3.1") {  
            echo "execute ";  
            echo shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 3 1");  
            echo "done";  
          } elseif ($id == "3.0") {  
            echo "execute ";  
            echo shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 3 0");  
            echo "done";  
          }

        }
        ?>
    </div>
  </body>
</html>


Mein Problem ist nun folgendes, wenn ich das PHP Skript über meinen PC aufrufe und einen der "Buttons" selektiere, erscheint nur jeweils das erste und zweite echo, der shell_exec Befehl wird nicht ausgeführt!

Ich habe bereits Probiert:
-Raspberry Pi Image neu installiert (inkl. Update von PHP5 auf PHP7, apache, etc.)
-PHP Skript mit dem "shell_exec ("sudo /home/pi/433Utils/RPi_utils/send 10101 1 1");" angelegt und erfolgreich über das Terminal ausgeführt (lässt darauf schließen, dass in der php.ini nichts an Funktionieren "disabled" ist).
-Diverse andere commands wie exec, shell_exec, passthru, etc. ausprobiert.
-Erstellen eines Python Scripts mit dem Befehl "os.system" und anschließendem einbinden der separaten Python Datei über einen shell_exec Befehl (sudo python /pfad/meinpythonscript.py).
-Überprüfen und anpassen der Berechtigungen auf sämtliche Ordner und Dateien.

Ausschließen kann ich an dieser Stelle auf jeden Fall schonmal, dass es mit dem 433MHz Sender zusammenhängt, da die Funksteckdosen auf jeden fall sich über den Terminalbefehl an-/ausschalten lassen!
Auch der shell_exec Command ist in einer einzelnen separaten PHP-Datei, wie oben erwähnt, funktionstüchtig.

Ich bitte um Hilfe.

Mit freundlichen Grüßen

Content-Key: 338812

Url: https://administrator.de/contentid/338812

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: 132895
132895 24.05.2017 aktualisiert um 20:33:24 Uhr
Goto Top
Schon mal darüber nachgedacht unter welchem Account der Webserver läuft? Vermutlich nicht, denn www-data unter dem Webserver meist als Daemon laufen hat per Default kein sudo Recht! Also musst du diesem erst das Recht dazu erteilen, Stichwort visudo
Hier lesen:
Bash-Skript von User www-data als root laufen lassen

Gruß

p.s. Tipp: Schalte das Error-Reporting aktiv dann siehst du auch was Sache ist.