我修好了它。
Web 服务器可以访问 raspistill 命令,但该命令使用了它无权访问的视频设备。我将 www-data 用户添加到视频和音频组,这样我就可以播放音频和拍照了。我还必须为我的网络目录中的某些文件夹更改一些组。我必须解决的最后一件事是 os.system() 调用返回了一些东西,这给浏览器显示网页带来了一些问题。它只显示文本。我现在使用 subprocess 模块,初始代码似乎可以工作。我的简单测试代码在这里:
import os, sys
import subprocess
#output = subprocess.check_output("raspistill -o /var/www/images/image.jpg", shell=True)
#os.system('raspistill -v -o /var/www/images/image.jpg')
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
output = ""
output2 = ""
# Get data from fields
if form.getvalue('speak_en'):
output = subprocess.check_output("espeak \"%s\"" % (form.getvalue('speak')), shell=True)
if form.getvalue('picture'):
output2 = subprocess.check_output("raspistill -o /var/www/images/image.jpg", shell=True)
print """\
Content-type:text/html\n
<html>
<head>
<title>Hello Word - First CGI Program</title>
</head>
<body>
<h2>Select photo or speak</h2>
<form action=\"/cgi-bin/hello.py\" method=\"post\">
<input type=\"checkbox\" name=\"speak_en\" value=\"on\" />
Speak: <input type=\"text\" name=\"speak\"><br />
Take picture:
<input type=\"checkbox\" name=\"picture\" value=\"on\" />
<br />
<input type=\"submit\" value=\"Submit\" />
</form>
<img src=\"../images/image.jpg\" width=640 height=480>
<p>Speak output: %s</p>
<p>Picture output: %s</p>
</body>
</html>
""" % (output, output2)