¿Cómo ejecutar mplayer con la salida de audio del parlante de PHP web script en Linux?

He iniciado sesión en la distribución de Linux feora 15 con nombre de usuario: stackoverflow. Mi navegador ejecuta en el sistema local un script PHP para reproducir música usando el comando PHP system (“mplayer /tmp/stackoverflow.wav”), passthru (“mplayer /tmp/stackoverflow.wav”). Tal como el comando de Linux.

Como un usuario stackoverflow no escucho ningún audio. Pero puedo ver que mplayer /tmp/stackoverflow.wav se está ejecutando y tiene una duración de audio de 8 minutos.

Mi pregunta es: ¿cómo puedo usar el sistema PHP (“mplayer /tmp/stackoverflow.wav”); para cambiar de usuario y ejecutar el mismo comando, para que pueda escuchar mi música con mi PHP?

 

La respuesta directa a su pregunta sería usar sudo , como en

 system("sudo -u  mplayer /tmp/itworks.wav") 

Pero no estoy seguro de que esto resuelva tu problema. En primer lugar, ¿dónde quieres que se emita el sonido? El servidor o el cliente / navegador? La técnica anterior funcionará en el servidor. Para el navegador, necesitaría hacer que el cliente cargue el archivo .wav como un objeto o algo similar y tratar con él, presumiblemente a través de un complemento.

¿Mencionas que puedes ver un proceso de ejecución de mplayer? Si está en el servidor (o el servidor y el cliente están en la misma máquina física) y no puede escuchar ningún resultado, entonces hay algo más que está pasando. Es posible que el usuario del proceso del servidor web no tenga permiso para usar la tarjeta de audio, pero entonces dudo que el proceso de mplayer continúe por tanto tiempo sin terminar con el error de “permiso denegado”. Para resolver esto, necesitaríamos más información, supongo

Me gustaría hacer lo mismo. Cuando bash ejecutar mplayer solo a través de shell_ecex(); no selecciona pulseaudio para salida. Incluso cuando -ao pulse en el comando -ao pulse no funciona. Cuando trato de ejecutar el comando mplayer con sudo (agregué www-data al archivo sudoers), mplayer aparentemente comienza a jugar (según el uso del recurso) pero no hay salida. Cuando elimino manualmente la instancia de mplayer, se bloquea toda la salida de sonido, incluso cuando inicio mplayer a través de la consola. ¿Tienes algún consejo para mí sobre cómo ejecutar mplayer a través de PHP?

Editar: ¡Tengo una solución! Mi comando se ve así:

 shell_exec('sudo -u [username] nohup mplayer -slave [mplayer attributes go here] 2> /dev/null > /dev/null &')); 

Esto también detiene el script php de esperar un resultado de mplayer, por lo que inicia mplayer y continúa la operación.