【问题标题】:Bash script though webpage to take pictureBash脚本通过网页拍照
【发布时间】: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

标签: php linux bash raspberry-pi webcam


【解决方案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。
      猜你喜欢
      • 1970-01-01
      • 2011-06-08
      • 2019-12-19
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2011-01-23
      相关资源
      最近更新 更多