我正在尝试从我的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执行它,该命令有效,并且流也可以在这种情况下工作,但我希望每当我访问页面时进程都会启动,这是现在没有发生的。 错误是什么? 谢谢!
答案 0 :(得分:0)
由于基于许可的问题,错误是(几乎可以肯定)。
当您从CLI执行mjpg_streamer
库时,您很可能以具有sudoer
权限的人身份登录,并且可以轻松执行此操作。
您必须意识到,执行user
库的请求的mjpg_streamer
将是拥有处理请求的Apache
实例的同一用户。
在这种情况下,解决此问题的最简单方法是登录CLI,然后su www-data
(可能是谁拥有您的apache实例)并检查您是否可以运行它。如果您获得permission denied
,那么您需要更改授予该库访问权限的方式。更改图书馆的所有权可能不是最好的选择,但您可能会因修改该组而逃脱。