Ankündigung

Einklappen
Keine Ankündigung bisher.

Shell_exec() blockt php-Programm

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Shell_exec() blockt php-Programm

    Hallo erstmal,

    Ich benutze Ubuntu 10.04 mit der neuesten Version von xampp.

    Ich möchte mit einem PHP-Skript über ein Shell-Kommando ein Programm starten (VLC-Player). wenn ich jetzt beispielstweise 'shell_exec("vlc")' ausführe, passiert einfach gar nichts und das Skript hängt sich auf (läd immer weiter vom Server ohne dass etwa passiert).
    Wenn ich es mit 'shell_exec("vlc --rc-fake-tty")' versuche, bekomme ich eine HTML-Seite mit 3-4 Zeilen kryptischer Zeichen. Meine erste Vermutung war, dass das PHP-Skript irgendwie auf einen Rückgabewert wartet und bis dahin blockiert. Simple Befehle wie 'shell_exec("ls")' funktionieren nämlich wunderbar.

    Auch den Umweg, dass PHP eine Bash-Skript aufruft, welches dann den VLC startet, führt zum selben Ergebnis.

    Mit exec() statt shell_exec() habe ich es auch schon versucht, selbes Resultat.

    Hat jemand eine Vermutung woran das liegen könnte?

    Vielen Dank schonmal im Voraus!

    airbux


  • #2
    Die Antwort hast du dir schon selbst gegeben.

    Aus dem Manual zu exec():

    Beachten Sie auch, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.
    Sollte das auch nicht funktionieren, musst du möglicherweise mit einem Bash-Skript arbeiten.
    @fschmengler - @fschmengler - @schmengler
    PHP Blog - Magento Entwicklung - CSS Ribbon Generator

    Kommentar


    • #3
      Wie leitet man denn die Ausgabe in eine Datei um?
      Hab's mit folgendem versucht:
      Code:
      exec("/usr/bin/vlc > test.txt &");
      Er zeigt dann zwar die Seite an (hab einfach ein echo eingebaut) und lädt nicht mehr, aber der VLC startet trotzdem nicht. Kann es sein dass der Webserver vielleicht keine Rechte hat den VLC zu starten?


      Andernfalls wird PHP solange laufen, bis das Programm beendet ist.
      Das Programm wird ja nicht mal gestartet (jedenfalls wird der Prozess nicht angezeigt).

      Kommentar


      • #4
        PHP shell_exec permissions

        Kommentar

        Lädt...
        X