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

如何使用PHP在我的操作系统上创建新进程,php,vlc,Php,Vlc,目标:通过PHP代码启动VLC播放器,并在播放器中播放指定的视频。 操作系统:Ubuntu 11.10 问题:请参考我下面的脚本(对PHP来说还是新的),我没有看到视频播放,甚至没有在执行这个脚本时运行的背景VLC进程。你能指出问题和适当的文件来帮助我完成这项工作吗?如果我在shell上发出相同的命令,视频将播放,但在使用PHP的“system”命令时,不会播放视频 脚本: <?php system('/usr/bin/vlc /home/atish/Videos/TEDGary.avi'

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

问题:请参考我下面的脚本(对PHP来说还是新的),我没有看到视频播放,甚至没有在执行这个脚本时运行的背景VLC进程。你能指出问题和适当的文件来帮助我完成这项工作吗?如果我在shell上发出相同的命令,视频将播放,但在使用PHP的“system”命令时,不会播放视频

脚本:

<?php
system('/usr/bin/vlc /home/atish/Videos/TEDGary.avi', $retval);
echo $retval;
?>
更大的目标:我想为用户提供一个Web界面来运行我的应用程序(C代码)。我的c代码应用程序实现了一些视频转码和管理工作流,我希望能够在后台运行该c代码,当它完成时,我希望在VLC中播放视频


谢谢。

首先,您必须提供一些操作系统信息(Linux?Mac?),可能还有一些有关窗口管理器的信息。在VLC中播放视频可能比只启动后台进程要困难一些,下面对此进行解释:

启动并运行gui应用程序可能很棘手,但使用“xhost”并导出显示配置-请参见以下内容:

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


末尾的&告诉进程在后台运行,前面的nohup告诉进程在启动shell(在本例中为php)关闭时不要被杀死。

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

允许所有人使用X服务器:

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

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

<>但是,我也建议你在使用XHoo.

时考虑安全性问题。你希望VLC播放器从哪里开始?在服务器上?关于客户?客户端和服务器总是同一台机器吗?是的,客户端和服务器是同一台机器。我只是想在某种程度上为我的应用程序提供一个web界面。我希望视频在执行php脚本的同一台机器上启动…出现的第一个问题是:web服务器运行的用户是否有权限在用户当前桌面上打开窗口?是否有关于如何向web服务器用户授予此类权限/特权的指针?谢谢你,xhost+localhost似乎是授予这些特权的方式。谢谢你的见解。谢谢你,第二个链接很有帮助。我现在可以看到vlc弹出。谢谢
system('DISPLAY=:0 /usr/bin/vlc /home/atish/Videos/TEDGary.avi', $retval);