Existem dois problemas aqui. A primeira é que www-data
(o usuário do apache) não possui um $HOME
, então o libreoffice não pode ser executado se não houver $HOME
definido. O segundo problema é que, a menos que você o configure especificamente dessa forma (e você realmente não deveria), apache
não tem acesso ao diretório /tmp
do sistema. Um servidor da Web normalmente é executado em um ambiente restrito e não tem acesso total ao sistema de arquivos por motivos de segurança muito válidos.
Então, você precisa i) dar ao usuário do apache uma casa e ii) dar a ele um diretório para o qual ele possa escrever. Portanto, crie um diretório tmp
na mesma pasta onde você armazena sua página da Web e execute o seguinte código php
:
<?php
shell_exec('export HOME=/tmp && libreoffice --headless -convert-to pdf --outdir ./tmp /tmp/ayb/document_34.doc');
?>
Acabei de testar e funciona perfeitamente na minha máquina. Certifique-se de que seu ./tmp
tenha suas permissões definidas para 777. Além disso, talvez seja necessário reiniciar o apache se você jogar muito com o aroud. Parou de funcionar para mim depois de um tempo quando fiz alterações e precisei reiniciá-lo.