使用shell_exec从php文件启动mjpg流

时间:2016-02-03 20:14:30

标签: php video-streaming raspberry-pi2

我正在尝试从我的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执行它,该命令有效,并且流也可以在这种情况下工作,但我希望每当我访问页面时进程都会启动,这是现在没有发生的。 错误是什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

由于基于许可的问题,错误是(几乎可以肯定)

当您从CLI执行mjpg_streamer库时,您很可能以具有sudoer权限的人身份登录,并且可以轻松执行此操作。

您必须意识到,执行user库的请求的mjpg_streamer将是拥有处理请求的Apache实例的同一用户。

在这种情况下,解决此问题的最简单方法是登录CLI,然后su www-data(可能是谁拥有您的apache实例)并检查您是否可以运行它。如果您获得permission denied,那么您需要更改授予该库访问权限的方式。更改图书馆的所有权可能不是最好的选择,但您可能会因修改该组而逃脱。