.PHP?XY=XZ

  • Hey,


    Ich wusste nicht wie ich den Beitrag nennen sollte, hoffe mal das passt so.
    Ich habe eine index.php. Ich möchte sagen dass wenn ich z.B. /index.php?service=motion eingebe dass er dann die Webseite normal lädt aber dann beispiel ausführt "sudo service motion start".
    Ich finde aber leider nichts dazu wie ich das "deklarieren" kann.

  • Das ist glaube ich nicht dass was ich suche.
    Ich meine,
    Wenn ich z.B. index.php/service=motionstart aufrufe,
    dass er dann z.B. mittels exec "sudo service motion start" ausführt.

    • Official Post

    Dann, ist es genau das was du brauchst ;). Es sind ja nur Beispiele, ob da nun name=joe oder service=motionstart steht, spielt ja keine Rolle. Die Anwendungsweise ändert sich nicht.


    PHP
    <?php
    
    
    if ($_GET["service"] == "motionstart"){
    shell_exec("sudo service motion start");
    }
    
    
    ?>


    Nun kannst du mit ?service=motionstart den gewünschten Befehl ausführen. Aber, Obacht, ganz so einfach klappt klappt das mit sudo Befehlen in shell_exec nicht. Denn php wird unter dem User apache (wenn man den Apachen installiert hat) ausgeführt, dieser darf, in der Basis configuration, keine sudo Befehle ausführen.

  • Ja das findest du doch im link von dbv...


    If ($_GET[service] == "motion") {
    Xyz ausführen...
    }

  • Danke schon mal für eure Hilfe.
    Leider tut sich beim aufruf von "XXX/index.php?service=motionstart"
    Garnichts. Hab es auch schon mit anderen Befehlen versuch , leider auch erfolglos.
    Den PHP Code hab ich ans Ende der Datei gepackt. Alles andere ist in HTML geschrieben.


    EDIT:
    Gerade gelesen das es mit Sudo nicht geht, gäbes es da eine andere Möglichkeit das Trozdem auszuführen?
    Ginge das wenn ich z.B. damit dann eine Shell starte, wo der Befehl drinne steht?

  • Beim Aufruf von index.php :

    Code
    [Thu Jul 18 22:40:00 2013] [error] [client 192.168.178.26] PHP Notice:  Undefined index: service in /var/www/index.php on line 43


    Line 43:

    Code
    if ($_GET["service"] == "motionstart"){



    Beim Aufruf von index.php?service=motionstart


    Ich glaub da ist etwas mit den Sudo Berechtigungen falsch oder?


    EDIT:
    Gefixt mit

    Code
    sudo chown -R root /var/lib/sudo


    Geht aber immer noch nicht. Jetzt kommt


    sudo: no tty present and no askpass program specified


    War aber vorher auch schon.

  • Gerade gemacht. Hab:
    APACHE ALL = (ALL) NOPASSWD: ALL
    Eingefügt in: /etc/sudoers.tmp (sudo visudo)
    Geht aber leider nicht.

  • Habs rausgefunden!
    Lösung:


    1. Der Username war Falsch, Ich schreib "apache" hin es musste aber "www-data" dort stehen.
    Das hatte ich mit:

    PHP
    <?php
    exec('whoami');
    ?>


    rausgefunden.


    2. Ein schreibfehler war drinne. Hab zum Schluss statt "ALL", "ALLL" geschrieben.


    Danke für eure Hilfe!:)