关于php:bash脚本通过网页拍照

Bash script though webpage to take picture

所以我尝试使用php在网页上运行bash脚本(如果相关的话,在Raspberry pi上)。普通的命令可以像"ls"等很好地工作。但是,当试图从连接到pi的网络摄像机上拍照时,使用以下命令:"fswebcam image.jpg"根本不起作用。

我正在努力确定这个问题。这是否与权限有关?

直接通过终端拍照很好。

编辑:

很抱歉一开始没有包含这些信息,但我对所有东西都很熟悉…但是我使用的是LEMP堆栈,所以我没有运行Apache,而是使用nginx


正如您所怀疑的,我还认为您的Raspberry PI硬件面临许可问题。作为主题mix raspberry/hardware/linux/web,您在互联网上阅读了许多垃圾解决方案;它们经常在任何地方提供根权限!

在您的案例中,我认为您的Apache日志文件(/var/log/apache2/error.log)将包含错误消息,类型:

1
can not access /dev/vchiq

目前,您的Apache用户(WWW数据)无法访问它:

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

键入以下命令:

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

这意味着用户WWW数据将添加到组视频中(可以访问/dev/vchiq)。然后您必须重新启动Apache服务器,以便它重新读取组文件并得到更改的通知。注意:如果您必须从Web访问www数据,您可以将其添加到gpio组。


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

1
chmod 777 /dev/video0

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


PHP以Apache用户权限运行。

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

1
ll $(which fswebcam)