我正试图从我的Raspberry Pi的PHP文件中启动mjpg进程。这是我在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" />
如果我直接从shell中执行该命令,该命令就可以工作,而且在这种情况下,流也可以工作,但我希望在我访问页面时启动该进程,但现在没有发生。
错误在于 (几乎可以肯定) 由于一个基于权限的问题。
很可能当你执行 mjpg_streamer
库,您是以一个拥有 sudoer
权限之类的,谁能轻易执行这个。
你必须意识到 user
谁将提出执行请求 mjpg_streamer
的实例的同一个用户。Apache
处理请求。
在这种情况下,最简单的解决方法是登录到CLI,然后 su www-data
(很可能是你的apache实例的所有者),然后检查你是否可以运行它。如果你得到一个 permission denied
那么你就需要改变对该库的访问方式。改变库的所有权可能不是最好的选择,但你可以通过修改组来实现。