下面显示的CGI python脚本sound.py通过连接到Raspberry音频输出的扬声器播放声音。当我从命令行通过“python sound.py”执行脚本时,声音播放正常。但是,当我尝试通过Web(http://192.168.1.246/cgi-bin/sound.py)调用它作为cgi脚本触发它时,声音将无法播放,浏览器将只显示“Hi Hello World!”(我想, ,表示服务器至少将其识别为CGI脚本并执行它而不产生错误)。
我认为这个问题可能与声音文件的权限/所有权有关,并且对这些问题进行了修改,但这没有帮助(我也粘贴了有关脚本本身的所有权和权限的信息) ,和声音文件)。
非常感谢你的帮助!
马克。
-rwxrwxrwx 1 root root 441 Jul 10 23:23 sound.py -rwxr-xr-x 1 root root 29812 Jul 9 22:58 cardinal-short.mp3
脚本(sound.py):
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
cgitb.enable()
import pygame
name = "cardinal-short"
pygame.mixer.init()
pygame.mixer.music.load("/var/www/html/cgi-bin/cardinal-short.mp3")
pygame.mixer.music.play()
pygame.mixer.music.set_volume(1.0)
while (pygame.mixer.music.get_busy() == True):
continue
pygame.mixer.quit()
print "Content-Type: text/plain;charset=utf-8"
print
print "Hi Hello World!"
答案 0 :(得分:1)
我能够解决这个问题: sudo usermod -aG audio www-data 然后重新启动apache。
问题在于,我引用了网络上的elsewhere,"声音设备(在/ dev / snd /中)只能由群组成员访问" audio&#34 ;。 pi是该组的成员,而www-data不是。"
感谢所有提供帮助的人。