Запустите приложение X11 GUI из браузера (apache - php)

Так же, как https://Ask-ubuntu.ru/questions/364458/running-gui-app-with-php, мне нужно запустить приложение X11 (VLC) со страницы php на сервере Apache.

Мне нужно открыть приложение VLC на сервере, а не в удаленной системе.

Я пытаюсь получить это через вызов php shell_exec к сценарию оболочки, содержащему команды VLC.

Скрипт 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

это работает для видео, но не для аудио; Windows открывает и воспроизводит видео, но без звука и других сообщений об ошибках, связанных с аудиосервером...

export DISPLAY =: 0, похоже, не имеет никакого эффекта.

Любая помощь будет оценена.

1 ответ

X-сервер работает на том же компьютере, что и PHP? Если это так, вы можете * запустить процесс PHP от имени того же пользователя, что и владелец X-сервера (путем редактирования /etc/apache2/apache2.conf) и затем добавьте цепочку идентификатора дисплея в команду:

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

Вы также можете использовать putenv (IIRC), чтобы установить переменные окружения из PHP.

* Но подумайте о том, как это сделать, прежде чем делать это. Если что-то, что выполнялось в PHP, было скомпрометировано (происходит постоянно), какой ущерб это может причинить?

Другие вопросы по тегам