Shell Skript mit PHP ausführen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich möchte meinen Raspberry Pi als Radio verwenden, indem ich auf einer Seite ein Shell Skript ausführe, welches den Webradiostream öffnet, dafür habe ich ein Skript welches ich mit der exec() Funktion ausführen möchte, das klappt aber leider nicht. Wisst ihr woran das liegt ?

    Inhalt der PHP-Datei:

    PHP
    <?php
    echo exec('1live.sh');
    ?>

    Inhalt des Shell Skripts:

    Code
    mplayer -playlist htttp://www.wdr.de/wdrlive/media/einslive.m3u

    Danke und noch einen schönen Samstagabend euch.

  • PHP
    <?php
        exec("mplayer -playlist htttp://www.wdr.de/wdrlive/media/einslive.m3u");
    ?>

    Das "echo" bewirkt das Text ausgegeben wird. Das brauchst du nicht und du kannst alles ohne 2. Skript lösen. PHP kann sowas auch direkt

    Es gibt KEINE dummen Fragen!

  • Dann solltet ihr mal einen " How to use Google " Kurs belegen - ernsthaft!

    Man brauch nur nach 3 Stichwörtern suchen und findet gleichn ganzen Haufen: PHP exec Script
    Oder: über PHP Script ausführen

    Oder (und das is das beste!) Nach der Überschrift von hier googlen: Shell Skript mit PHP ausführen
    (...)


    Forumsuche nach: PHP exec

  • Funktioniert leider auch nicht. Kann es sein das nur ein Befehl ausgeführt wird und dann wird die Verbindung getrennt wodurch der Stream nicht weiterlaufen kann ?


  • Funktioniert leider auch nicht. Kann es sein das nur ein Befehl ausgeführt wird und dann wird die Verbindung getrennt wodurch der Stream nicht weiterlaufen kann ?

    Also....

    Probleme:
    1. der mplayer spielt sein Stückchen, und das kann lang sein...
    2. Webserver, PHP und der Browser haben Timeouts.
    3. Wenn der PHP Prozess stirbt(und das tut er), reißt er seine Kinder(mplayer) mit in den Tod

    Ich habe das so gelöst, dass der mplayer von einem eigenständigen PHP bei Bedarf gestartet wird. Dieses horcht an einem Unix Socket auf Kommandos.

    Im Webserver PHP wird ein Socket zum mplayer-beaufsichtiger geöffnet und ihm Kommandos gesendet.

    spruch.png

    Einmal editiert, zuletzt von combie (4. Januar 2014 um 20:44)

  • Guten Morgen, da ich ein ähnliches Problem hatte bin ich über Google hier im Forum gelandet. Mir viel auf das ihr in den Code-Schnipseln HTTP mit 3-T geschrieben habt, und da ich HTTP nur mit 2-T kenne dachte ich dass das die Lösung sein könnte.

  • @ Baastii: Gutes Auge :)

    Damit sowas nicht passiert bzw als Fehlerquelle von vorneherein ausschliesbar wäre, sollte man den Befehl immer erst mal in der Konsole ausprobieren um sicherzustellen das der auszuführende Befehl überhaupt funktioniert. Wenn das gegeben ist kann man dazu übergehen und diesen über ein PHP Script auszuführen...

    Anschliesend wäre einem dann das nächste Problem aufgefallen, welches combie erwähnte: Timeout
    Eine einfache Lösung dieses Problems wäre - wie im ersten Beitrag bereits fast richtig verwendet - ein Bash Script zu erstellen in dem der "mplayer" Befehl enthalten wäre und das PHP Script würde dann dieses Bash Script so ausführen das es im Hintergrund weiter laufen würde...

    Also zur Veranschaulichung wie ich das meine:
    (Schreibfehler müssen selber entdeckt und behoben werden)

    /var/www/1live.sh

    Bash
    #!/bin/bash
    
    
    mplayer -vo fbdev -playlist htttp://www.wdr.de/wdrlive/media/einslive.m3u

    /var/www/play.php

    /var/www/play.php
    [code=php]
    <?php
    $playlist = "htttp://http://www.wdr.de/wdrlive/media/einslive.m3u";
    exec('/bin/bash /var/www/mplay.sh '.$playlist.' &', $output, $return_var);
    ?>
    [/php]

  • Ich zeige euch jetzt mal meinen primitiven PHP-mplayer-Server. Gestartet wird er in der /etc/rc.local

    Längst noch nicht perfekt.



    Das PHP Script, welches vom Browser aufgerufen und vom Webserver gestartet wird:

    spruch.png

    Einmal editiert, zuletzt von combie (5. Januar 2014 um 11:51)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!