Systemlautstärke ändern mit PHP scheitert

nv22nv

Grünschnabel
Hallo,

Ich möchte auf meinem PC über ein Web-Interface die Lautstärke ändern können. Da ich Linux benutze, geht das einfach per Kommandozeile. So stellt man mit dem Befehl
Code:
aumix /dev/mixer -v100
die Lautstärke auf 100%. Also sollte es doch einfach möglich sein, durch Aufrufen der folgenden PHP-Datei im Browser die Lautstärke auf 100% zu setzen:

PHP:
<?php
shell_exec('/usr/bin/aumix /dev/mixer -v100');
?>

Leider passiert beim Aufruf der PHP-Datei im Browser überhaupt überhaupt nichts. Safe Mode ist deaktiviert.

Das Apache-Protokoll gibt dann immerhin geringfügig Aufschluss: aumix: error opening mixer: No such file or directory

Ich habe es dann mit amixer anstatt aumix versucht, ebenfalls ohne Erfolg. Da sich die Fehlermeldung nach einem Berechtigungsproblem anhört, habe ich den Benutzer www-data zur audio-Gruppe hinzugefügt, das war aber alles ohne Erfolg.

Hat jemand von euch eine Idee, wo das Problem liegen könnte? Danke schon im Voraus für die Unterstützung.
 
Zuletzt bearbeitet:
Hast du dich mal utner dem Benutzer engeloggt unter dem auch PHP und der Webserver läuft und den Befehl direkt in die Konsole eingegeben? Funktioniert das?
 
Danke für deine Antwort!

Eigentlich eine gute Idee, ich weiß aber nicht, wie das geht: Der Benutzer www-data wird vom System automatisch angelegt. Ob eine Anmeldung überhaupt möglich ist, weiß ich nicht, in jedem Fall aber habe ich kein Passwort für den Benutzer und scheue auch darauf zurück, es zu ändern, falls das das System negativ beeinflusst.
 
Dann probier es erstmal mit einem beliebigen anderen Benutzer. " aumix: error opening mixer: No such file or directory" klingt nicht nach "permission denied" sondern mehr nach datei nicht gefunden :D
 
Bei mir selbst und unter einem anderen Benutzerkonto funktioniert der Befehl auf der Kommandozeile einwandfrei. :confused:
 
Eigentlich eine gute Idee, ich weiß aber nicht, wie das geht: Der Benutzer www-data wird vom System automatisch angelegt. Ob eine Anmeldung überhaupt möglich ist, weiß ich nicht, in jedem Fall aber habe ich kein Passwort für den Benutzer und scheue auch darauf zurück, es zu ändern, falls das das System negativ beeinflusst.

sudo oder su ist dein Freund. Beispiel mit sudo:

Code:
thinker@johann:~$ sudo -u www-data -i 
$ whoami
www-data

Wenn sudo ein Passwort haben mag, dann dein Nutzerpasswort. Und dein Nutzer muß entsprechende Rechte haben, die kannst du vorher als root mit "visudo" (das öffnet einen Editor) setzen. Leider schreibst du nicht, welche Distribution du einsetzt. Bei einem aktuellen Debian reicht es, deinen Nutzer in die Gruppe "sudo" zu setzen. Das macht ihn aber quasi zum Rechneradministrator.
Wenn sich der Nutzer nicht einloggen kann, dann mußt du möglicherweise statt "-i" "/bin/sh" angeben. Im Zweifelsfall schau dir vorher die Manpages von sudo an.

Das geht alles auch mit su, das hat aber eine andere Syntax. Auch da wieder auf die Manpage schauen!
 
Zuletzt bearbeitet:
sudo oder su ist dein Freund. Beispiel mit sudo:

Code:
thinker@johann:~$ sudo -u www-data -i 
$ whoami
www-data
Danke für deine Antwort. Ich hatte es selbst schon ähnlich versucht, aber vergessen, dass man hier noch den Parameter -u benötigt. Das Ergebnis der Sache ist leider, dass ich dann als Benutzer www-data auf der Kommandozeile die genannten Befehle problemlos verwenden kann, das Umstellen der Lautstärke auf diese Art funktioniert. Whoami liefert, dass ich auch wirklich Benutzer www-data bin. Es funktioniert nur eben nicht, die Befehle zu verwenden, um die Lautstärke über eine PHP-Seite ändern zu lassen.
 
Leider passiert beim Aufruf der PHP-Datei im Browser überhaupt überhaupt nichts


1. Was passiert wenn du die PHP-Datei über die Shell mit PHP aufrufst?
Code:
php dateiname.php
2. Was passiert wenn du statt /dev/mixer das richtige Ziel adressierst (wahrscheinlich /dev/mixer0)?
 
para_noid, danke für deine Antwort.

Wenn ich die PHP-Datei von der Kommandozeile aufrufe, wird die Lautstärke verändert, auf diese Art funktioniert es also.

Danach habe ich ohne jede weitere Veränderung an der PHP-Datei noch einmal versucht, dasselbe über den Browser zu erreichen - erstaunlicherweise mit Erfolg. Es hat sofort funktioniert. Ich bin zwar ratlos, wodurch das Problem verursacht wurde, aber wenn es nun dauerhaft funktioniert soll es mir recht sein...

/dev/mixer ist übrigens der einzige Eintrag beginnend mit "mixer", der sich in meinem dev-Verzeichnis befindet.

Danke an alle für die Unterstützung!
 
Zurück