Поэтому я пытаюсь запустить скрипт bash через веб-страницу с помощью PHP (на Raspberry Pi, если это актуально). Обычные команды работают нормально, как ‘ls’ и т. Д. Однако при попытке сделать снимок с веб-камеры, подключенной к Pi, используйте команду:
‘fswebcam image.jpg’ это не работает вообще.
Я изо всех сил пытаюсь определить проблему. это может быть что-то делать с разрешениями?
Фотосъемка напрямую через терминал работает нормально.
РЕДАКТИРОВАТЬ:
Извините, что не включил эту информацию в начале, но я довольно новичок во всем Интернете … Но я использую стек LEMP, поэтому у меня не работает Apache, но я использую Nginx
Как вы и подозревали, я также думаю, что вы столкнулись с проблемой разрешения вашего оборудования на 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-данные будут добавлены в групповое видео (которое имеет доступ к / dev / vchiq). Затем вам нужно перезапустить сервер apache, чтобы он перечитал файл группы и получил информацию об изменениях. Примечание: вы бы добавили www-данные в группу gpio, если бы вам пришлось обращаться к ним через Интернет.
PHP работает с правами доступа Apache.
У вашего пользователя apache есть права на запуск fswebcam?
ll $(which fswebcam)
Таким образом, из сообщения об ошибке, которое я получил (опубликовано выше), я понял, что / dev / video0 нужны разрешения для других пользователей. поэтому мое решение было просто пойти:
chmod 777 /dev/video0
Это, вероятно, довольно грязное решение, но, тем не менее, работает