Я установил 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, который обеспечивает доступ к API программирования OpenOffice.org UNO.
Вы посмотрели этот пост в блоге?
У меня была такая же проблема и да (спасибо Wrikken) после добавления /usr/local/sbin
к переменной среды PATH. Я смог запустить libreoffice в качестве www-данных под apache.
Что касается универсальных сетевых объектов (UNO) , есть некоторые инструменты для конечных пользователей plug-and-play, см. Docvert и JODConverter ( jODconverter и pyODconverter ). Все это можно назвать веб-сервисом или exec от PHP.