Warum kann mein Apache-Server über shell_exec() keinen Sound abspielen?
Wenn ich den folgenden Befehl an der Konsole (Bash) eingebe wird ein Ton ausgegeben:
screen -dmS webradio-beep mplayer -loop 3 /var/www/html/clock8/soundfiles/beep.wav
Wenn ich den selben Befehl in einem PHP-Script verwende bleibt der Lautsprecher stumm - es wird auch kein Fehler ausgegeben.
shell_exec("screen -dmS webradio-beep mplayer -loop 3 /var/www/html/clock8/soundfiles/beep.wav");
ich habe schon alles durch von:
sudo visudo und www-data ALL=NOPASSWD: ALL hinzufügen
andere Befehle über shell_exec() wie z.B. die IP-Adresse ausgeben über
<?php
$lanip = shell_exec("ifconfig wlan0 | awk '/inet / {print $2}'");
print $lanip;
?>
funktionieren problemlos - hat jemand eine Idee wo dran das liegen könnte?
1 Antwort
einigen Programmen werden (wohl aus Sicherheitsgründen) nicht alle Environment-Variablen übergeben
env liefert bei mir den Report: (env grep AUDIO ) die Zeilen
AUDIODRIVER=pulseaudio
QEMU_AUDIO_DRV=pa
vielleicht muss du die mit z.B.
export AUDIODRIVER=pulseaudio
und
export QEMU_AUDIO_DRV=pa
vor shell_exec()
erst setzen.
daran hätte ich denken sollen. Apache läuft gewöhnlich unter der User-ID von wwwrun. Es ist also etwas anderes als ein "normaler" User.
Aaaaarg -> ganz dummer Fehler von mir.....
In der Dokumentation zu dem Projekt das ich vor etwa 8 Jahren mal begonnen und dann vor 4 Jahren eingemottet hatte, stand noch ein Hinweis, das man zum Auslesen der Systemtemperatur www-data der Gruppe video hinzu fügen muss.
Dann dachte ich mir gerade, vielleeicht muss ich www-data auch der Gruppe audio hinzu fügen....
Tada -> Problem gelöst