Bash 脚本通过网页拍照

Bash script though webpage to take picture

所以我正在尝试使用 PHP 通过网页 运行 一个 bash 脚本(如果相关的话,在 raspberry pi 上)。普通命令工作正常,如 'ls' 等。但是,当尝试从连接到 Pi 的网络摄像头拍照时,使用命令: 'fswebcam image.jpg' 根本不起作用。

我正在努力确定问题所在。会不会跟权限有关?

直接通过终端拍照就可以了。

编辑:

很抱歉一开始没有包含这些信息,但我对网络的所有方面都是新手...但我使用的是 LEMP 堆栈,所以我没有 Apache 运行ning 但使用Nginx

PHP 使用 apache 用户权限运行。

您的 apache 用户是否有启动 fswebcam 的权限?

ll $(which fswebcam)

正如您所怀疑的,我认为您在 raspberry Pi 上也面临硬件许可问题。由于主题混合了 raspberry / hardware / linux / web,您在互联网上阅读了很多废话解决方案;他们经常到处提供 root 权限!

在您的情况下,我认为您的 Apache 日志文件 (/var/log/apache2/error.log ?) 将包含错误消息,类似于:

can not access /dev/vchiq

目前您的 apache 用户 (www-data) 无法访问它:

pi$ ls -l /dev/vchiq
crw-rw---T 1 root video 248, 0 Jan  1  1970 /dev/vchiq

键入这些命令:

sudo usermod -a -G video www-data
sudo /etc/init.d/apache2 restart

这意味着用户 www-data 将被添加到群组视频中(可以访问 /dev/vchiq)。然后你必须重新启动你的 apache 服务器,以便它重新读取组文件并得到更改的通知。注意:如果你必须从网络访问它们,你会添加 www-data 到 gpio 组。

因此,根据我收到的错误消息(上面发布的),我意识到 /dev/video0 需要其他用户的权限。所以我的解决方案就是:

chmod 777 /dev/video0

这可能是一个非常肮脏的解决方案,但仍然有效