PHP shell_exec () no Ubuntu

1

Estou usando o Ubuntu com o libreOffice. Instalei unoconv para converter um arquivo *.odp em *.pdf . Quando eu executo o comando unoconv -f pdf myfile.odp do terminal, ele funciona muito bem. Eu quero fazer a mesma coisa usando o método PHP shell_exec() . Então, eu escrevi o seguinte código:

$output = shell_exec('unoconv -f pdf test.odp 2>&1');
echo $output;

Mas mostra o seguinte erro:

/usr/bin/python: /opt/lampp/lib/libz.so.1: no version information available (required by /usr/bin/python) 
Traceback (most recent call last): File "/usr/bin/unoconv", line 24, in import uno,
unohelper File "/usr/lib/python2.7/dist-packages/uno.py", line 34, in import pyuno SystemError: dynamic module not initialized properly

Como posso resolver este problema?

Obrigado antecipadamente.

    
por Ariful Islam 18.01.2012 / 14:36

1 resposta

1

O Apach pode ser configurado para proibir a chamada de algum comando / libs ...

Mas talvez as variáveis de ambiente (por exemplo, $ PATH ...) não sejam as mesmas para seu usuário e usuário do Apach (www-data) ou algo parecido.

Veja um exemplo do que você pode fazer para pesquisar o problema:

Tente chamar set ou setenv para obter a lista das variáveis.

Crie um script básico callset.sh :

#!/bin/bash
set

(não esqueça de chmod +x callset.sh para dar permissão de execução):

Em seguida, chame este script bash do PHP:

$output = shell_exec ('/your/dir/callset.sh 2>&1');
echo $output

ou

exec ("/your/dir/callset.sh", $output, $exitstatus);
print_r ($output);

Em seguida, verifique a diferença com sua própria chamada set .

Finalmente, forneça as variáveis ausentes assim:

$output = shell_exec('PATH=aaa:bbb:ddd unoconv -f pdf test.odp 2>&1');
    
por olibre 19.01.2012 / 00:31