я пытаюсь запустить процесс mjpg из файла php на моем Raspberry Pi. Это код, который я использую в файле php.
<?php
//this execution does not work, nor does it echo anything if i try and echo it
$cmd = 'mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -y -r 640x480 -f 10" -o "/usr/local/lib/output_http.so -p 8090 -w /var/www/mjpg_streamer"';
shell_exec($cmd);
?>
<img src = "http://ip:8090/?action=stream" />
Команда работает, если я выполняю ее непосредственно из оболочки, и в этом случае также работает поток, но я хочу, чтобы процесс запускался всякий раз, когда я получаю доступ к странице, чего сейчас не происходит.
В чем ошибка?
Спасибо!
Ошибка (почти наверняка) из-за разрешения на основе проблемы.
Более чем вероятно, когда вы выполните mjpg_streamer
библиотека из CLI вы вошли как кто-то с sudoer
разрешения или тому подобное, кто может легко выполнить это.
Вы должны понимать, что user
кто будет делать запрос на выполнение mjpg_streamer
библиотека будет тем же пользователем, которому принадлежит экземпляр Apache
обработка запроса.
В этом случае самый простой способ устранения неполадок — войти в CLI, а затем su www-data
(вероятно, кто владеет вашим экземпляром apache) и проверьте, можете ли вы запустить его. Если вы получите permission denied
Затем вам нужно изменить способ предоставления доступа к этой библиотеке. Смена владельца библиотеки, вероятно, не лучшая ставка, но вы, вероятно, можете избежать изменения группы.
Других решений пока нет …