从浏览器运行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运行的东西被泄露(一直发生),那会有什么损害?