Execute o aplicativo GUI X11 a partir do navegador (apache - php)

1

Da mesma forma que link , eu preciso executar um aplicativo X11 (VLC ) de uma página php no servidor Apache.

Eu preciso abrir o aplicativo VLC no servidor, não no sistema remoto.

Estou tentando fazer isso através de uma chamada php shell_exec para um script shell contendo os comandos VLC.

O script sh abre corretamente o aplicativo VLC se iniciado a partir da linha de comando, mas não através da chamada php, porque ele não encontra (penso) nenhuma sessão X11 iniciada: ele retorna mensagens de erro relacionadas:

  - 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
  - ...

Se eu conceder ao usuário do apache, www-data, para se conectar ao servidor X

xhost +local:www-data

funciona para o vídeo, mas não para áudio; o windows abre e reproduz o vídeo, mas sem som e outras mensagens de erro relacionadas ao servidor de áudio ...

export DISPLAY =: 0 parece não ter nenhum efeito.

Qualquer ajuda seria apreciada.

    
por Geojj 16.12.2013 / 11:21

1 resposta

3

Existe um servidor X rodando no mesmo computador que o PHP? Se esse for o caso, você poderia * executar o processo PHP como o mesmo usuário do proprietário do servidor X (editando /etc/apache2/apache2.conf ) e, em seguida, encadear o identificador de exibição no comando:

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

Você também pode usar putenv (IIRC) para definir as variáveis de ambiente do PHP.

* Mas considere as ramificações de segurança de fazer isso antes de você. Se algo que o PHP estava rodando estivesse comprometido (acontece o tempo todo), que dano poderia fazer?

    
por Oli 16.12.2013 / 12:12