0

我有一个树莓派,我正在尝试通过网络应用程序上的控件制作显示视频。我正在按照此处描述的方式使用 omxplayer 。我的 PHP 问题文件只包含这一行(为测试而修改):

exec("/home/pi/master/playmovie.sh test.mp4");

引用文件 /home/pi/master/playmovie.sh:

omxplayer -o hdmi /home/pi/Videos/$1 < /home/pi/master/cmd > /dev/null &
echo . > /home/pi/master/cmd

当我通过 putty 在本地执行此 php 文件或命令本身时,一切正常,但是当我尝试通过网络执行它时,它会锁定并且电影永远不会开始。

重要的:

  • playmovie.sh 有执行权限
  • master/cmd 有 777 权限
  • 写入 master/cmd 并执行其他脚本在本地和通过 php 在线都可以正常工作
  • 从 php online 我可以执行omxplayer -h, ls -l /home/pi/Videos/test.mp4echo -n p > /home/pi/master/cmd所以它肯定会认为这些都是有效的。

我觉得我快疯了,这实际上是我在这个项目上需要做的最后一件事,以使其正常运行,请帮助!

4

1 回答 1

0

我的猜测是因为你的实际 exec 命令不处理标准输出、标准错误和标准输入。当从命令行调用 PHP 时,没有输出缓冲区,但从浏览器中却有。

听起来它正在获得一些输出,因此等待脚本完成执行并最终超时,因此它似乎什么也没做。

如果你使用 nohup 会发生什么?

exec("nohup /home/pi/master/playmovie.sh test.mp4 &");

于 2018-01-29T20:23:51.827 回答