2017-02-02 24 views
1

Так что я пытаюсь запустить скрипт bash через веб-страницу с помощью PHP (на малине pi, если это актуально). Обычные команды работают нормально, как «ls» и т. Д. Однако при попытке сделать снимок с веб-камеры, подключенной к Pi, с помощью команды: 'fswebcam image.jpg' он вообще не работает.Bash скрипт, хотя веб-страница, чтобы делать снимок

Я изо всех сил пытаюсь определить проблему. это может быть связано с разрешениями?

Съемка непосредственно через терминал работает нормально.

EDIT:

К сожалению о не включая эту информацию в самом начале, но я совсем новичок на все вещи Сети ... Но я использую LEMP стек, так что я не Apache работает, но с использованием Nginx

+0

Сложной на «не работает на всех». Какая у вас ошибка? (Попробуйте перенаправить 'stderr' в файл, чтобы заглянуть.) Есть ли что-нибудь в журнале, например'/var/log/messages'? Попробуйте 'su' для пользователя, которым вы его управляете (' apache', если нужно верить ответам) и посмотрите, сможете ли вы его выполнить. – eewanco

+0

Я буду проверять, какие сообщения об ошибках я могу получить и внести изменения – Makoto

+0

Я получаю сообщения об ошибках [UFW BLOCK] в/var/log/messages – Makoto

ответ

1

Как вы подозревали, я также думаю, что вы столкнулись с проблемой разрешения вашего оборудования на малине Pi. Как тема микс малина/hardware/linux/web, вы читаете множество решений дерьма в Интернете; они часто предоставляют разрешение на использование везде!

В вашем случае я думаю, что ваш лог-файл Apache (/var/log/apache2/error.log?) Будет содержать сообщение об ошибке, вид:

can not access /dev/vchiq 

На данный момент ваш апач пользователя (WWW-данные) не может получить доступ к нему:

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 

Это означает, что пользователь ш ww-данные будут добавлены в групповое видео (у которого есть доступ к/dev/vchiq). Затем вам необходимо перезапустить сервер Apache, чтобы он перечитывал файл группы и получал информацию об изменении. Примечание: вы добавили бы www-данные в группу gpio, если бы вам приходилось обращаться к ним из Интернета.

0

PHP работает с разрешениями пользователя apache.

Имеет ли ваш пользователь apache разрешения на запуск fswebcam?

ll $(which fswebcam) 
0

Итак, из сообщения об ошибке, которое я получил (опубликовано выше), я понял, что/dev/video0 необходимы разрешения для других пользователей. так что мое решение было просто пойти:

chmod 777 /dev/video0 

Это, вероятно, довольно грязное решение, но работает, тем не менее

+1

см. Мой ответ.Если ww-данные перейдут в группу видео, у него будет доступ, поэтому вам не нужен chmod на/dev/video. Я думаю, что исходное разрешение будет восстановлено в/dev/video при перезагрузке. –

+0

yup you right apache/nginx смутил меня – Makoto