Autor Tópico: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?  (Lida 6733 vezes)

Offline jtmdias

  • Usuário Ubuntu
  • *
  • Mensagens: 13
    • Ver perfil
Ora viva!
Estou a desenvolver uma pequena página de configuração fácil de tarefas regulares em ambiente de desenvolvimento Web, como, por exemplo, abrir o Filezilla, ou editar ficheiros comuns do LAMPP (httpd.conf,php.ini,etc). Isto será a página local pré-definida na distro Linux que estou a criar num projecto.

Ora, estou aqui com um problema.
Desejo que os utilizadores possam abrir o Filezilla clicando num link na página.
Pensei que abrir o Filezilla através do browser seria possível, apenas utilizando...


<?php
echo exec('filezilla');
?>


ou então


<?php
$comando 
shell_exec('filezilla');
echo 
"<pre>$comando</pre>";
?>


Acontece que nenhuma delas abre o filezilla, mas se abrir a consola e escrever
Código: [Selecionar]
/usr/bin/filezillaou apenas
Código: [Selecionar]
filezillao programa já abre, naturalmente.

Já pensei se não será alguma definição do Apache que tenho que mudar, ou se tenho que criar um script de consola simples para abrir o programa e chamar o script no php, mas a verdade é que a informação é tanta e diversificada, que fico perdido.

Alguém me pode ajudar, por favor?

P.S:
Se fizer
Código: [Selecionar]
php /var/www/executar/index.php
o filezilla também se inicia.
sudo apt-get moo

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #1 Online: 06 de Junho de 2011, 20:03 »
Imagine o seguinte cenário: Se isso fosse possível, o que empediria de um site executar, por exemplo, um:
Código: [Selecionar]
rm -rf /?

O comando exec() só permite execução na lado do servidor, não no lado do cliente.

Offline jtmdias

  • Usuário Ubuntu
  • *
  • Mensagens: 13
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #2 Online: 06 de Junho de 2011, 20:09 »
Certo, percebi. Então, mesmo sendo apenas para desenvolvimento, posso tirar a ideia de abrir apps pelo Browser?
Era só mesmo para que os alunos (é um projecto para uma faculdade) tivessem as ferramentas todas à mão.
« Última modificação: 06 de Junho de 2011, 20:26 por jtmdias »
sudo apt-get moo

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #3 Online: 07 de Junho de 2011, 00:12 »
O apache não é um processo do seu usuário (roda com um usuário próprio, somente com o necessário), ele não sabe qual xserver usar e, mesmo que soubesse, não tem permissão. Pra fazer funcionar, o processo vai ser similar ao usado pra rodar aplicativos gráficos via cronjobs.

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #4 Online: 07 de Junho de 2011, 16:17 »
Certo, percebi. Então, mesmo sendo apenas para desenvolvimento, posso tirar a ideia de abrir apps pelo Browser?
Era só mesmo para que os alunos (é um projecto para uma faculdade) tivessem as ferramentas todas à mão.

Pelo browser não é possível. E é importante que seus estudantes entendam que isso é por motivo de segurança.
UMA das muitas falhas de segurança de browsers como o Internet Explorer, no ambiente cheio de vidraças, é que é possível desenvolver uma aplicação (uma "applet", por assim dizer) que executa código binário no lado do cliente. Esses "applets" são feitos em linguagens compiladas e chamam-se Active-X.

Existem alguns "remendos" no IE para tentar possibilitar alguma segurança, é claro, mas se você puder executar código binário pelo browser, em essência, o seu usuário vira um pato numa caçada: pode levar um tiro em qualquer momento.

Offline jtmdias

  • Usuário Ubuntu
  • *
  • Mensagens: 13
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #5 Online: 07 de Junho de 2011, 16:56 »
Certo, compreendi. É uma medida de segurança, portanto.
Obrigado pela ajuda :)
sudo apt-get moo

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #6 Online: 07 de Junho de 2011, 18:49 »
Pelo browser não é possível.
Errado, é plenamente possível (como disse na minha outra mensagem).

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #7 Online: 07 de Junho de 2011, 20:03 »
Pelo browser não é possível.
Errado, é plenamente possível (como disse na minha outra mensagem).

Só não mostrou como!

No mundo Microsoft você pode fazer algo assim:

Código: [Selecionar]
<script>
function LaunchApp() {
  if (!document.all) {
    alert ("Available only with Internet Explorer.");
    return;
  }
  
  var ws = new ActiveXObject("WScript.Shell");
  ws.Exec("C:\\Path\\To\\File\\program.exe");
}
</script>

Só que vai esbarrar com:

1. Esse treco só funciona no IE;
2. O IE reclama e, provavelmente, não te deixará fazer isso;
3. Só funciona no Windows (ActiveX).

Gostaria de ver um código que funcione no browser, em ambiente Linux....
« Última modificação: 07 de Junho de 2011, 20:08 por fpissarra »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #8 Online: 07 de Junho de 2011, 21:04 »
Só não mostrou como!

Não forneci exemplo prático (não é a mesma coisa), até porque, como disse, é similar ao processo usado pra abrir aplicativos gráficos via cronjobs mas, já que pediu

Código: [Selecionar]
<?php
$res 
shell_exec("DISPLAY=____ /caminho/completo/ate/o/aplicativo 2>&1 &");
#controle
echo $res
?>


Se for testar na mesma máquina, o valor do DISPLAY (no lugar do ____) deve ser :0, echo $DISPLAY (em um emulador de terminal) pra confirmar. Se for remoto, tem que especificar junto o nome e domínio. O xserver também deve permitir a conexão, o correto seria via xauth, mas já que é só um teste, em um terminal digite xhost + (pra permitir qualquer um) e depois que rodar o script, xhost - (restaurar).

-------link
http://www.tldp.org/HOWTO/Remote-X-Apps-5.html
« Última modificação: 07 de Junho de 2011, 21:13 por irtigor »

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #9 Online: 08 de Junho de 2011, 12:03 »
Só não mostrou como!

Não forneci exemplo prático (não é a mesma coisa), até porque, como disse, é similar ao processo usado pra abrir aplicativos gráficos via cronjobs mas, já que pediu

Código: [Selecionar]
<?php
$res 
shell_exec("DISPLAY=____ /caminho/completo/ate/o/aplicativo 2>&1 &");
#controle
echo $res
?>


Se for testar na mesma máquina, o valor do DISPLAY (no lugar do ____) deve ser :0, echo $DISPLAY (em um emulador de terminal) pra confirmar. Se for remoto, tem que especificar junto o nome e domínio. O xserver também deve permitir a conexão, o correto seria via xauth, mas já que é só um teste, em um terminal digite xhost + (pra permitir qualquer um) e depois que rodar o script, xhost - (restaurar).

-------link
http://www.tldp.org/HOWTO/Remote-X-Apps-5.html

Ok, é uma solução elegante, mas suponho que não é exatamente isso que o jtmdias queria. Sua solução exige que o aplicativo exista no servidor. O que jtmdias queria era abrir uma aplicação do lado cliente, pelo browser... Ou seja, a aplicação tem que existir no cliente, não no servidor.

Offline jtmdias

  • Usuário Ubuntu
  • *
  • Mensagens: 13
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #10 Online: 08 de Junho de 2011, 12:07 »
Eu acho que não perceberam. Embora o cliente e o servidor sejam coisas distintas, estão os dois na mesma máquina.
Eu quero dar-lhes a opção de iniciar a aplicação clicando num link como "Abrir Filezilla FTP".

Para que eles possam abrir directamente do browser. Os clientes não estão noutro local, nem noutra rede.
Como vai ser uma distro para alunos das áreas de design, programação, etc, ela já vem com o LAMPP a correr por defeito.
sudo apt-get moo

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: PHP - Como executar uma aplicação do Sist. Op. a partir do browser?
« Resposta #11 Online: 08 de Junho de 2011, 16:36 »
Mas o X só funciona dessa forma (cliente-servidor). Lê novamente, que a solução é essa que falei.