Запуск libreoffice из php exec()

Я установил libreoffice без заголовка на freebsd-сервер с apache, чтобы программно конвертировать документы (например, odt- > pdf). Он работает из командной строки! Но моя цель - это сделать это с php. Это требует, чтобы веб-пользователь (www) мог запустить libreoffice. Но он не может.

При запуске libreoffice в качестве моего собственного пользователя я получаю:

%libreoffice --headless -convert-to pdf Litteraturundervisningogit.doc
javaPathHelper: not found #This should not be a problem, says people on the net.
convert /usr/home/bundsgaard.net/www/jeppe/foredrag/Litteraturundervisningogit.doc ->
 /usr/home/bundsgaard.net/www/jeppe/foredrag/Litteraturundervisningogit.pdf using writer_pdf_Export
%

Если я попробую ту же команду, что и root, она не работает. То же самое касается проблемы с www-пользователем из php:

sp# libreoffice --headless -convert-to pdf Litteraturundervisningogit.doc
javaPathHelper: not found
sp#

Проблема в том, что я не получаю никакой информации из libreoffice, поэтому я не знаю, почему libreoffice не хочет работать как другие пользователи, чем мои собственные.

Мой вопрос: как мне разрешить www-user запускать libreoffice через exec() в php?

Ответ 1

Мне удалось исправить эту проблему быстрым export HOME=/tmp перед запуском команды convert, это дает libreoffice где-то доступную для записи, чтобы работать с ней.

Ответ 2

Не строго ответ, но вместо использования PHP exec вы можете использовать PUNO, модуль PHP5, обеспечивающий доступ к OpenOffice. org API программирования UNO.

Ответ 4

У меня была та же проблема и да (спасибо Wrikken) после добавления /usr/local/sbin к переменной среды PATH. Я смог запустить libreoffice в качестве www-данных под apache.

Ответ 6

Я recomend put config path сначала вы запускаете exec() или shell_exec();

IE:

// Vars
putenv('PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin');
putenv('HOME=' . $outputdir); 

$outputdir = chmod 777 И тот же самый форлдер из команды libreoffice "--outdir"