Bash脚本通过网页拍照

Posted

技术标签:

【中文标题】Bash脚本通过网页拍照【英文标题】:Bash script though webpage to take picture 【发布时间】:2017-06-19 13:23:47 【问题描述】:

所以我正在尝试使用 php 通过网页运行 bash 脚本(如果相关,则在树莓派上)。普通命令可以正常工作,例如“ls”等。但是,当尝试从连接到 Pi 的网络摄像头拍照时,请使用以下命令: 'fswebcam image.jpg' 它根本不起作用。

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

直接通过终端拍照可以正常工作。

编辑:

很抱歉在开始时没有包含此信息,但我对所有网络事物都很陌生...但我使用的是 LEMP 堆栈,所以我没有运行 Apache,而是使用 nginx

【问题讨论】:

详细说明“根本不起作用”。你得到什么错误? (尝试将stderr 重定向到文件以查看。)日志中是否有诸如/var/log/messages 之类的内容?尝试su 给你正在运行它的用户(apache 如果答案是可信的),然后看看你是否可以执行它。 我明天会检查我能收到哪些错误消息并进行编辑 我在 /var/log/messages 中收到 [UFW BLOCK] 错误消息 我删除了防火墙,但从 stderr 我收到以下错误消息: 1m--- Opening /dev/video0... [0m[0mTrying source module v4l2... [0m[31mError打开设备:/dev/video0 [0m [31mopen:权限被拒绝[0m [0m尝试源模块v4l1 ... [0m [31m错误打开设备:/dev/video0 [0m [31mopen:权限被拒绝[0m [31m无法找到源可以读取 /dev/video0 的模块。 [0m 【参考方案1】:

正如您所怀疑的,我认为您在树莓派上的硬件也面临权限问题。由于主题混合树莓/硬件/ 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 服务器,以便它重新读取组文件并了解更改。注意:如果您必须从 web 访问它们,您可以将 www-data 添加到 gpio 组。

【讨论】:

【参考方案2】:

PHP 以 apache 用户权限运行。

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

ll $(which fswebcam)

【讨论】:

【参考方案3】:

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

chmod 777 /dev/video0

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

【讨论】:

看我的回答。如果 ww-data 进入视频组,他将有权访问,因此您不需要在 /dev/video 上添加 chmod。我认为在重启时会恢复原来的权限到/dev/video。

以上是关于Bash脚本通过网页拍照的主要内容,如果未能解决你的问题,请参考以下文章

通过 bash 脚本将 bash 脚本添加到 crontab

bash 脚本不能通过 crontab 工作

通过桌面图标运行 bash 脚本时找不到节点命令

通过 netcat 连接并在 bash 脚本中发送命令

通过 MySQL 循环的 Bash 脚本

是否可以通过 smtp 通过 bash 脚本发送邮件?