Läuft dein Script auf einem Windows oder einem Unix-artigen System (Linux, Mac)?
Der Verzeichnisstruktur nach wohl unter Windows.
Außerdem wäre es interessant deine System/ PHP-Konfiguration zu kennen.
Welche PHP Version verwendest du und ist der Safe Mode aktiviert?
exec verhält sich, je nach dem unterschiedlich.
Außerdem solltest du beachten:
php.net schrieb:
Falls Sie diese Funktion benutzen, um ein Programm zu starten und im Hintergrund weiterlaufen lassen möchten, müssen Sie sicherstellen, dass die Ausgabe des Programms in eine Datei oder einen anderen Ausgabestream umgeleitet wird. Anderenfalls wird PHP solange hängen, bis das Programm zu Ende ausgeführt wurde.
Bei notepad wird das Programm starten und da es theoretisch "weiterläuft" bis es manuell beendet wird, wird auch entsprechend dein PHP-Script hängenbleiben. [Irgendwann timeouted es natürlich.] Gleiches gilt für system und passthru. Allgemein bin ich nicht sicher, ob es sinnvoll ist GUI-Programme via Script zu starten.
Versuch doch erst mal einen VLC Server zu starten, der braucht nämlich nicht zwangsweise eine grafische Oberfläche und du hast über den Soundoutput eine gute Kontrollmöglichkeit, ob dein Kommando ausgeführt wird:
Windows, VLC 64bit:
[src=bash]C:\Program Files\VideoLAN\VLC\vlc.exe -I http http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test2_MPEG1_Stereo_CBR_96kbps_32000Hz.mp3[/src]
Windows, VLC 32bit:
[src=bash]C:\Program Files\VideoLAN (x86)\VLC\vlc.exe -I http http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test2_MPEG1_Stereo_CBR_96kbps_32000Hz.mp3[/src]
Beschwerden wegen des MP3-Files bitte nach /dev/null, das war die einzige MP3 Datei, die ich auf die Schnelle frei im Web finden konnte.
In PHP könnte das etwa so aussehen:
[src=php]<?php
# Konfiguration:
// 64bit player verwenden
// true präferiert den 64bit player
// false präferiert den 32bit player
$prefere64 = true;
// Standardverzeichnisse für VLC
$players = array(0 => "C:\Program Files\VideoLAN\VLC\vlc.exe", 1 => "C:\Program Files\VideoLAN (x86)\VLC\vlc.exe");
// Sample Mediadatei
$media = "http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test2_MPEG1_Stereo_CBR_96kbps_32000Hz.mp3";
// Musikbibliothek
$dldir = "Downloads";
// Helferlein
function initLib($dldir, $media){
// Bibliothek anlegen, falls nicht existent
if(!is_dir($dldir)){mkdir($dldir);}
// Dateinamen aus Pfad extrahieren
$pi = pathinfo($media);
$bn = $pi['basename']; // HelixMobileProducer_test2_MPEG1_Stereo_CBR_96kbps_32000Hz.mp3
// Zieldatei
$filepath = $dldir . DIRECTORY_SEPARATOR . $bn;
// Datei in Bibliothek importieren, falls nötig
$result = false;
if(!file_exists($filepath)){
$content = file_get_contents($media); // Binary lesen
$result = file_put_contents($dldir . DIRECTORY_SEPARATOR . $bn, $content); // Binary schreiben
// Windows: Downloads/HelixMobileProducer_test2_MPEG1_Stereo_CBR_96kbps_32000Hz.mp3
// Unix: Downloads\HelixMobileProducer_test2_MPEG1_Stereo_CBR_96kbps_32000Hz.mp3
}else{
$result = true; // file existiert
}
return $result;
}
// Bibliothek initialisieren
initLib($dldir, $media);
// Helferlein
function selectPlayer($players, $prefere64){
// kein 64bit, dann drehe die Liste
$players = (!$prefere64) ? array_reverse($players) : $players;
// suche den ersten installierten Player
foreach($players as $player){
if(file_exists($player)){
return $player;
}
}
// kein Player gefunden
return false;
}
if(($player = selectPlayer($players, $prefere64))!==false){
// starte Player mit http Interface und Mediafile
exec($player . ' -I http ' . $media);
}else{
// Warnung
die('No supported player found!');
}
?>[/src]