Apache 如何使用cgi在服务器端播放wav声音?

Apache 如何使用cgi在服务器端播放wav声音?,apache,cgi,server-side,wav,Apache,Cgi,Server Side,Wav,如何从(bash)CGI脚本运行命令,在服务器端播放wav声音?这就是我要做的 #!/bin/sh echo Content-type: text/plain echo "" echo "Server is playing sine.wav!" aplay -q sine.wav 您可以按照nak所述执行命令行音频播放器,但由于运行Apache的用户的权限,这可能不起作用。默认情况下,Apache作为www-data:www-data(或某些发行版上的Apache:Apache或www:www

如何从(bash)CGI脚本运行命令,在服务器端播放wav声音

这就是我要做的

#!/bin/sh
echo Content-type: text/plain
echo ""
echo "Server is playing sine.wav!"
aplay -q sine.wav

您可以按照nak所述执行命令行音频播放器,但由于运行Apache的用户的权限,这可能不起作用。默认情况下,Apache作为www-data:www-data(或某些发行版上的Apache:Apache或www:www)运行。作为一个快速修复/测试,您可以通过修改/etc/apache2/apache2.conf(或/etc/httpd/httpd.conf)文件,将Apache设置为以有权访问计算机上音频设备的用户的身份运行:

 User USER_THAT_CAN_PLAY_AUDIO
 Group USER_THAT_CAN_PLAY_AUDIO 

警告:这是不安全的,也不是一个永久性的解决方案!

我遇到了一个老问题,想知道如何解决同样的问题:当有人提出特定请求时,让我的个人Apache Web服务器向我发出警告(在我的情况下,是呼叫聊天,而不需要运行任何IM)

以下解决方案是我在Slackware 14.1上使用的解决方案:根据您的发行版

  • 启动
    visudo

  • 添加一行
    userrunningapacheall=(ALL)NOPASSWD:/usr/bin/play
    (userrunningapache是您的Apache使用的用户名)

  • 在PHP页面中,要播放声音,请添加以下行:
    system(“sudo/usr/bin/play sound.WAV”);


如果您不想让Apache访问
/usr/bin
文件夹,即使仅限于
play
,也可以复制
sox
可执行文件(用于运行
/usr/bin/play
的程序)在其他地方,但您必须相应地修改上面的最后两个说明。

我希望通过连接到web服务器的扬声器播放声音。我即将尝试此操作,但我尝试使用类似于此的mplayer,它给了我一个错误,即“无法打开扬声器”“。好吧,如果这不起作用,那么可能还有另一个问题需要首先解决。结果是它不会播放任何音频,即使是本地的。