我使用用户名登录到 linux feora 15 发行版:stackoverflow。 我的浏览器在本地系统中执行一个 PHP 脚本来使用 PHP system("mplayer/tmp/stackoverflow.wav"), passthru("mplayer/tmp/stackoverflow.wav") 命令播放音乐。比如linux命令。
作为 stackoverflow 用户,我没有听到任何声音。但我可以看到 mplayer/tmp/stackoverflow.wav 正在运行,音频持续时间为 8 分钟。
我的问题是:如何使用 PHP 系统("mplayer/tmp/stackoverflow.wav");切换用户并运行相同的命令,以便我可以用我的 PHP 听到我的音乐?
<?php
// for example
switchuser("su stackoverflow password");
system("mplayer /tmp/itworks.wav");
?>
最佳答案
我也想这样做。
当我尝试仅通过 shell_ecex();
运行 mplayer 时,它不会选择 pulseaudio 进行输出。即使我在命令中包含 -ao pulse
它也不起作用。
当我尝试使用 sudo 运行 mplayer 命令时(我将 www-data 添加到 sudoers 文件),mplayer 显然开始播放(根据资源使用情况)但没有输出。当我手动终止 mplayer 实例时,整个声音输出都被阻止,即使我通过控制台启动 mplayer 也是如此。
您对我如何通过 PHP 运行 mplayer 有什么建议吗?
编辑:我有一个解决方案!我的命令如下所示:
shell_exec('sudo -u [username] nohup mplayer -slave [mplayer attributes go here] 2> /dev/null > /dev/null &'));
这也会阻止 php 脚本等待来自 mplayer 的结果,因此它会启动 mplayer 并继续运行。
关于php - 如何在 Linux 上运行带有来自 PHP web 脚本的音频扬声器输出的 mplayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243327/