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脚本通过网页拍照的主要内容,如果未能解决你的问题,请参考以下文章