Запуск libreoffice из php exec () - PullRequest
13 голосов
/ 30 января 2012

Я установил 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-пользователю разрешение на запуск libreoffice через exec () в php?

Ответы [ 7 ]

14 голосов
/ 17 апреля 2012

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

3 голосов
/ 13 апреля 2012
3 голосов
/ 30 января 2012

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

1 голос
/ 28 января 2018

Я рекомендую сначала указать путь к конфигурации при запуске 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 И тот же forlder из команды libreoffice"--outdir"

1 голос
/ 14 февраля 2012

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

0 голосов
/ 12 марта 2019

Это работает для меня.

Убедитесь, что вы установили java RE, например, в ubuntu:

apt-get install default-jre

Сначала найдите местоположение вашего libreoffice

$ which libreoffice
/usr/bin/libreoffice

Включите расположение папки в PATH, а также установите переменную HOME, добавив следующие строки:

putenv('PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin');
putenv('HOME=/tmp'); 
system("libreoffice .....
0 голосов
/ 12 ноября 2012

О Универсальные сетевые объекты (UNO) , есть некоторые инструменты для конечных пользователей "plug-and-play", см. Docvert и JODConverter ( jODconverter и pyODconverter ). Все это может быть вызвано как веб-сервис или exec через PHP.

...