Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?Executarei no servidor. Inclusive quando o cliente acessar, deve ser aberto no servidor as aplicações. Pois é, deveria funcionar, já pesquisei muito e nada
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?
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.
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.Testei tudo. Tudo funcionou perfeitamente. Sem erro. Será que é permissão?
A terceira linha retornou 'no'.
Até ai não há problema algum. Adicionando o echo ao seus comandos, quais são os retornos?
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
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");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");faça um teste adicionando o usuário do apache (www-data) ao sudoers e execute o comando com sudo.
Não tenho acesso o sudoers. Acesso negado
O servidor é seu?
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
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.Fiz tudo que pediu.
Mas ainda recebi a mensagem de "Nao foi possivel''
Vou fazer um teste quando eu estiver em casa, tenho um server debian lá. Só vai demorar um pouco.
De todo mudo, muiiito obrigado!
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.
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.