从浏览器运行X11 GUI应用程序(apache – php)

与https://askubuntu.com/questions/364458/running-gui-app-with-php一样 ,我需要从Apache服务器上的php页面运行X11应用程序(VLC)。

我需要在服务器上打开VLC应用程序,而不是在远程系统上打开。

我试图通过php shell_exec调用包含VLC命令的shell脚本。

如果从命令行启动,sh脚本正确打开VLC应用程序,但不通过php调用,因为它没有找到(我认为)任何启动的X11会话:它返回相关的错误消息:

- inhibit interface error: Failed to connect to the D-Bus session daemon: //bin/dbus-launch terminated abnormally with the following error: No protocol specified - Autolaunch error: X11 initialization failed. - main interface error: no suitable interface module - xcb_xv vout display error: parent window not available - ... 

如果我授予apache用户www-data连接到X服务器

 xhost +local:www-data 

它适用于video,但不适用于音频; Windows打开并播放video,但没有声音,还有其他与音频服务器相关的错误消息…

export DISPLAY =:0似乎没有任何效果。

任何帮助,将不胜感激。

在与PHP相同的计算机上运行X服务器? 如果是这种情况,您可以 *作为与X服务器所有者相同的用户运行PHP进程(通过编辑/etc/apache2/apache2.conf ),然后将显示标识符链接到命令:

 shell_exec("DISPLAY=:0 vlc ...."); 

您还可以使用putenv (IIRC)从PHP设置环境变量。

*但在此之前考虑这样做的安全后果。 如果PHP运行的东西被泄露(一直发生),那会有什么损害?