[PHP] shell_exec() will nicht

  • Tachjen, ich habe ein Problem, ich will mit shell_exec() den VLC player starten und im Vollbildmodus eine Videodatei abspielen lassen.

    Als ich es das erste mal versucht habe, hat er es problemlos gemacht, dann habe ich den Rechner neu gestartet und nun startet er den VLC zwar, aber im Hintergrund, der Ton fängt auch an zu laufen und im Taskmanager ist er auch zu sehen nur er erscheint nicht auf der Oberfläche :(

    PHP
    $movie = "file:///".$basedir.$play;
    		$command = "\"C:/Program Files (x86)/VideoLAN/VLC/vlc\" --fullscreen -vvv \"$movie\"";
    		$openvlc = shell_exec($command);

    Einmal editiert, zuletzt von Basstra (13. Juni 2013 um 20:51)

  • Das ist komisch, sollte dann aber an VLC / Parametern liegen (was ich komisch finde, aber gut)
    BTW: Du kannst und sollst, wenn du schon " benutzt, nicht escapen.
    In " -Strings wird immer nach Variablen gesucht, die dann geparst werden. Es geht also auch so:

    PHP
    $movie = "file:///".$basedir.$play;
    		$command = "\"C:/Program Files (x86)/VideoLAN/VLC/vlc\" --fullscreen -vvv $movie";
    		$openvlc = shell_exec($command);

    Einmal editiert, zuletzt von winfreak (13. Juni 2013 um 21:57)

  • Auch so startet vlc nur im Hintergrund.

    Wenn ich den Befehl mittels echo ausgebe und diesen dann in die CMD packe tut es ohne Probleme

    nachtrag: der VLC brauch die Anführungsstriche (\"$movie\"), da sonst für ihn nach jedem Leerzeichen eine neue Datei beginnt

    Einmal editiert, zuletzt von Basstra (13. Juni 2013 um 22:13)

  • 3 möglichkeiten fallen mir da ein:
    1. wenn du das script übern browser startest versteckt dein webserver den php prozess, schau in den einstellungen vom webserver
    2. du hast vlc minimiert, schau mal ins systray
    3. probier das hier:

    PHP
    $command = "cmd /c \"C:/Program Files (x86)/VideoLAN/VLC/vlc\" --fullscreen -vvv $movie";
  • Da der Dateiname bei mehrwörtigen Filmnamen noch in " Zeichen muss, hier die Lösung von Jeix entsprechend abgewandelt. Einfach mal testen.

    PHP
    $command = "cmd /c \"C:/Program Files (x86)/VideoLAN/VLC/vlc\" --fullscreen -vvv \"$movie\"";
  • Das könnte eher daran liegen, dass PHP, wenn es als Hintergrunddienst läuft, keinen Zugriff auf die Benutzeroberfläche hat und VLC als Kindprozess somit auch nicht.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

Jetzt mitmachen!

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