Shellscript über php ausführen

  • Hallo,



    ich habe eine Webseite entwickelt, auf der ich ein aktuelles Bild zeigen will von meiner Webcam.(Kein Livestream) Ich habe ein Shellscript das ein Bild macht und auf mein Apache legt. Das Script liegt auch in dem Ordner in der meine ganzen php Dateien liegen...html/rasp.


    Momentaner Stand ist, dass ich in der Shell durch den Befehl 'Bash cam.sh' das Script ausführen kann und es auch ein Bild macht.


    Nun versuche ich über ein Php-Befehl das ganze auszuführen:


    [code=php]exec("bash /var/www/html/rasp/cam.sh");[/php]


    Leider funktioniert das nicht und ich habe auch keine Ahnung wieso.


    Ich habe dem ganzen Ordner schon über "chmod 777 /var/www/rasp/html/rasp" alle Rechte gegeben. Funktioniert leider auch nicht....


    Liebe Grüße :danke_ATDE:

  • Hallo strikerd,
    hat der www-data Nutzer denn die Rechte dazu ein Bild zu machen?


    PHP wird standardmäßig unter dem Nutzer www-data ausgeführt.


    Hast du mal versucht, ob es klappt, wenn du das PHP-Skript aus der Konsole (php skript.php) ausführst?


    Gruß
    ChrisvA

    Edited once, last by ChrisvA ().

  • Wie kann ich dem Nutzer www-data die Rechte geben?


    wenn ich über die Shell meine php Seite ausführe funktioniert es.

  • Habe jetzt in visudo folgendes stehn:




    Zusätzlich habe ich allen Ordnern die Rechte 777 gegeben wie in dem Link von ChrisvA beschrieben:


    Code
    sudo chmod 777 /var/www
    sudo chmod 777 /dev/vchiq


    Es funktioniert leider immernoch nicht über die Php Seite, bin mit meinem Latein am Ende....
    Automatisch zusammengefügt:[hr]
    Achso falls es vielleciht wichtig wäre, ich nutze das Programm fswebcam um die bilder zu machen...

    Edited once, last by strikerd ().

  • FAQ => Nützliche Links / Linksammlung => Befehle über PHP mit root Rechten ausführen (sudo webscript)


    Ich würde dir aber empfehlen lieber Python als Webserver zu verwenden und dann das sehr mächtige " picamera " Module zu nutzen. Damit hättest du viel mehr Möglichkeiten.


    FAQ => Nützliche Links / Linksammlung => [Python] Webserver, Websocket und ein bisschen AJAX

  • Dein Vorgehen ist 'suboptimal', da so bei jedem Aufruf der Seite ein Bild gemacht wird.
    Wenn mehrere auf diese Seite fast gleichzeitig zugreifen, kann das zu einem Durcheinander führen.


    Eine Möglichkeit wäre, wenn due das Bild regelmäßig, z.B. bei Cronjob erstellen lässt, und der Benutzer dann ein (leicht veraltetes) Bild zu sehen bekommt.


    Sonst musst du sicherstellen, dass immer nur ein Besucher-Prozess gleichzeitig auf die Kamera zugreift.

    Selber denken,
    wie kann man nur?

  • ...zum Beispiel mithilfe von $_SESSION


    $_SESSION ist ein Cache pro Client der genutzt werden kann um über mehrere *.php Dateien hinweg Einstellungen/Variablen zu verwenden. Hat zudem nur eine begrenzte Gültigkeitsspanne, läuft also irgendwann ab und wird dann gelöscht.
    Jede PHP Datei die davon profitieren soll muss, sofern noch nicht existent, "start_session();" ganz am Anfang der Datei ausführen.


    Beispiel:


    [code=php]
    <?php
    if (!isset($_SESSION)) { session_start(); }


    define('TIMEOUT', 3600); // default: 60 min
    session_cache_limiter(TIMEOUT);
    ini_set("session.gc_maxlifetime", TIMEOUT);


    if (isset($_SESSION['lastVisit'])) {
    echo "Seite wird bereits verwendet!";
    exit();
    }


    $_SESSION['lastVisit'] = time();
    ?>
    [/php]



    Quelle:
    http://www.forum-raspberrypi.d…-php?pid=221358#pid221358
    http://www.forum-raspberrypi.d…llen?pid=227665#pid227665