Ответ 1
Мне удалось исправить эту проблему быстрым export HOME=/tmp
перед запуском команды convert, это дает libreoffice где-то доступную для записи, чтобы работать с ней.
Я установил 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?
Мне удалось исправить эту проблему быстрым export HOME=/tmp
перед запуском команды convert, это дает libreoffice где-то доступную для записи, чтобы работать с ней.
Не строго ответ, но вместо использования PHP exec вы можете использовать PUNO, модуль PHP5, обеспечивающий доступ к OpenOffice. org API программирования UNO.
Вы посмотрели этот пост в блоге?
У меня была та же проблема и да (спасибо Wrikken) после добавления /usr/local/sbin
к переменной среды PATH. Я смог запустить libreoffice в качестве www-данных под apache.
О Универсальные сетевые объекты (UNO), есть некоторые "готовые к использованию" инструменты конечного пользователя, см. Docvert и JODConverter (jODconverter и pyODconverter). Все это можно назвать веб-сервисом или exec от PHP.
Я 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"