Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kaka_Ubuntu

Como abrir aplicativos via PHP

Recommended Posts

Como abrir softwares e extensões como PDF, PNG, etc através do PHP?
Eu estou usando o Debian. Com linguagem PHP7, 
Mysql e Apache2.

Meu objetivo é ser capaz de abrir os programas como navegador, libreoffice, etc usando a linguagem PHP. Eu já tentei usar: shell_exec, exec, system, passthru .... exemplo, tentei abrir o navegador.

shell_exec ("xdg-open 'https://www.google.com'");
shell_exec ("xdg-open/usr/bin/Chrome browser");
shell_exec ("xdg-open sensitive-browser");
shell_exec ("x-www-browser https://www.google.com");
shell_exec ("sensitive browser");
shell_exec ("/usr/bin/chromium-browser");

Mas eu não consegui abrir, alguém sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aonde você deseja executá-los? No servidor ou na máquina cliente?

 

Em teoria, os seus comandos deveriam funcionar, apenas verificando questões de permissão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Executarei no servidor. Inclusive quando o cliente acessar, deve ser aberto no servidor as aplicações. Pois é, deveria funcionar, já pesquisei muito e nada 

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma olhada nesta diretiva, pode estar habilitada: https://secure.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-exec-dir

 

De retorno você recebe algum erro? Nos logs do apache talvez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou utilizando o PHP 7 e as "Diretivas de configuração do modo de segurança" de acordo com o site secure.php.net foram descontinuadas apartir do PHP 5.4.0.
Então acho que eu não deveria ter problemas com restrição de acesso, vou pesquisar mais sobre esse assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Acabei confundindo uma coisa, acreditei que era de outra diretiva, e não de safe_mode (que foi removida no balaio).

 

Teste os seguintes comandos e veja o resultado de cada um:

echo shell_exec("ls");
echo shell_exec("php -v");
echo shell_exec("php -r 'echo function_exists(\"foo\") ? \"yes\" : \"no\";'");
echo shell_exec("php -r 'phpinfo();'");

Dependendo do resultado, vai confirmar se é permissão ou não.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até ai não há problema algum. Adicionando o echo ao seus comandos, quais são os retornos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No primeiro echo mostra os arquivos da minha pasta www
No segundo echo  a versão

 

Citar
  PHP 7.0.27-0+deb9u1 (cli) (built: Jan 5 2018 13:51:52) ( NTS )
  Copyright (c) 1997-2017 The PHP Group
  Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
  with Zend OPcache v7.0.27-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

No terceiro echo mostra ''no''

No quarto echo mostra muita coisa referente a versão

 

 

tudo isso printado no navegador de acordo com cada echo 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me refiro aos seus comandos, adicione os echos nele e veja os resultados:

echo shell_exec ("xdg-open 'https://www.google.com'");
echo shell_exec ("xdg-open/usr/bin/Chrome browser");
echo shell_exec ("xdg-open sensitive-browser");
echo shell_exec ("x-www-browser https://www.google.com");
echo shell_exec ("sensitive browser");
echo shell_exec ("/usr/bin/chromium-browser");

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eles não me retornam nada.

echo shell_exec ("sensitive browser");

Nesse caso a mensagem é de 'Não foi possível'.

shell_exec ("sensitive browser")or die("Não foi possível\n");

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um teste adicionando o usuário do apache (www-data) ao sudoers e execute o comando com sudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O servidor é seu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, na verdade nao devo estar fazendo certo

 

Eu testei os comandos em outros dois computadores, um com windows e outro com ubuntu
Mas também nao tiveve sucesso. O que estou é um debian 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na instalação padrão, o debian não possui o sudo. Terá que instalá-lo.

 

Pra isso, tem que usar o usuário root:

su // vai ir direto para o root user, basta colocar a senha
aptitude install sudo

Depois, adicione o user ao sudo group:

adduser www-data sudo

Talvez seja necessário reiniciar o apache ou até mesmo o servidor (o que eu acho improvável).

 

Após, execute os comandos com sudo na frente.

shell_exec("sudo sensitive browser") or die("Não foi possível\n");

Se mesmo assim não funcionar, bem, é improvável que seja permissão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou fazer um teste quando eu estiver em casa, tenho um server debian lá. Só vai demorar um pouco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito ter descoberto o porque não consigo fazer o chrome abrir por meio de comandos do PHP como (exec, shell_exec, system, passthru). É por conta do terminal físico, o PHP não esta em nenhuma das 7. Ainda é um tema obscuro para mim. (TTY 7).
No momento ainda não consigo executar o que eu queria, entretanto,  estou satisfeito após conseguir executar o PHP pela linha de comando.

 

No terminal, digitei :
 

php -a

exec( "DISPLAY=:0 /usr/bin/chromium-browser http://google.com --start-fullscreen" );

Com o comando exec conseguir executar o comando que passei.
Com DISPLAY=:0 conseguir mostrar na interface gráfica (7)  a execução.

Com o caminho do chromium onde esta a aplicação.

Com o endereço web que irá abrir.

E por fim full screen.

 

Como esse código é para o servidor. Já esta ótimo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.