如何使用PHP在我的操作系统上分叉新进程

时间:2012-01-03 11:35:20

标签: php vlc

目标:通过PHP代码启动VLC播放器,并在播放器中播放指定的视频。 操作系统:Ubuntu 11.10

问题:请参考下面的我的脚本(对PHP来说仍然是新的),我看不到视频播放,甚至在执行此脚本时都没有运行后台VLC进程。你能否指出一下这个问题和相应的文件,以帮助我完成这项工作?如果我在shell上发出相同的命令,视频会播放,但是在使用PHP的“system”命令时,不播放任何视频。

脚本:

<?php
system('/usr/bin/vlc /home/atish/Videos/TEDGary.avi', $retval);
echo $retval;
?>

网页上的输出:

0

更大的目标:我想为用户提供一个Web界面来运行我的应用程序(C代码)。我的c代码应用程序实现了一些视频转码和管理工作流程,我希望能够在后台运行该C代码,当它完成时,我想在VLC中播放视频。

三江源。

4 个答案:

答案 0 :(得分:2)

首先,您必须提供一些操作系统信息(Linux?Mac?),以及可能有关您的窗口管理器的一些信息。在VLC中播放视频可能比启动后台进程困难一些,这在此处进行了解释:http://www.php.net/manual/en/function.exec.php

启动并运行gui应用程序可能很棘手,但使用“xhost”并导出DISPLAY配置 - 请参阅PHP from commandline starts gui programs but apache doesn't

答案 1 :(得分:1)

这个怎么样:

<?php
exec('nohup /usr/bin/vlc /home/atish/Videos/TEDGary.avi &');
?>

&amp;最后告诉进程在后台运行,并且前端的nohup告诉进程在启动shell(在本例中为php)关闭时不会被杀死。

答案 2 :(得分:0)

您需要PHP才能使用您的用户帐户(以您身份登录)才能打开图形窗口。 PHP通常使用apache的用户而不是您自己的用户。我不知道你是否可以使用一个用户帐户进行2个进程。尝试使用SU命令或其他命令。

答案 3 :(得分:0)

允许每个人使用X服务器:

xhost +

在脚本中,执行命令时设置DISPLAY变量:

system('DISPLAY=:0 /usr/bin/vlc /home/atish/Videos/TEDGary.avi', $retval);

但是,我还建议您在使用xhost时考虑安全隐患。