我正在尝试通过网络摄像头捕获图像并将其显示在网页上但我得到了#34;权限被拒绝错误"
我正在使用以下用户/组运行apache / etc / apache2 / envvars:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
在html代码中我有请求:
myRequest.open("GET", "/cgi-bin/getImage1.cgi", true);
myRequest.send();
在/ usr / lib / cgi-bin中我有文件:getImage1.cgi
#!/bin/bash
rm image1.jpg
fswebcam -r 640x400 --no-banner --deinterlace -q -d /dev/video0 --jpeg 95 image1.jpg
文件和目录权限为:
In /usr/lib drwxrwxrwx 2 root www-data 4096 May 14 19:37 cgi-bin
In /usr/lib/cgi-bin -rwxr-xr-x 1 www-data www-data 115 May 14 18:51 getImage1.cgi
In /dev crw-rw----+ 1 root video 81,0 May 14 18:02 video0
用户www-data是以下群组的成员:
$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),44(video)
当我运行网页时,我收到以下错误代码:
rm: cannot remove 'image1.jpg': No such file or directory
Error opening device: /dev/video0
open: Permission denied
Unable to find a source module that can read /dev/video0.
End of script output before headers: getImage1.cgi,
错误意味着它正在执行脚本,但用户没有足够的权限来访问/ dev / video0。 apache用户应该是www-data,它是www-data和video group的成员,因此它应该可以访问/ usr / lib / cgi-bin目录,getImage1.cgi文件和/ dev / video0网络摄像头
如果我从控制台执行脚本,它运行正常。
如果有人能提出建议,我将不胜感激。