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

从浏览器运行 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

它适用于视频但不适用于音频;窗口可以打开并播放视频,但没有声音,并且还有其他与音频服务器相关的错误消息...

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

任何帮助,将不胜感激。

答案1

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

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

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

*但在你这样做之前,请考虑这样做的安全后果。如果 PHP 运行的某些东西被泄露(这种情况经常发生),会造成什么损害可以那可以吗?

相关内容