Запуск 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?

    Мне удалось исправить эту проблему с помощью быстрого 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.