Libreoffice –headless отказывается конвертировать, если не root, не будет работать с PHP-скриптом

Запуск безголового сервера Ubuntu 12.что-то.

root @ server: chown www-data /my/path/ -R

root @ server: chgrp www-data /my/path/ -R

root @ server: chmod 755 /my/path/ -R

root @ server: libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

 convert /my/path/foo.ppt -> /my/path/foo.pdf 

Работает как шарм.


root @ server: sudo -i -u www-data

$ libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

 convert /my/path/foo.ppt -> /my/path/foo.pdf Error: Please reverify input parameters... 

Черт.


root @ server: sudo -i -u someotheruser

$ libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

 convert /my/path/foo.ppt -> /my/path/foo.pdf Error: Please reverify input parameters... 

Черт.

У кого-нибудь есть идея? Попытка исследовать это только смутила меня больше. Возможно, это ошибка или какая-то зависимость?

Я наконец нашел ответ на этот вопрос … Добавить:

 export HOME=/tmp && 

к началу, так:

 export HOME=/tmp && libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path 

Это сработало для меня на CentOS 6.5 и как shell_exec () в PHP.

Мы столкнулись с такой же проблемой при запуске двунаправленного безголового (LibreOffice 5.0.5.2) в контейнере CloudFoundry (Diego) в составе приложения NodeJS.

Похоже, что более новые версии libreoffice не ожидают возможности записи HOME , но попробуйте написать TMPDIR .

strace показал: 8349 mkdir("app/tmp", 0777) = -1 ENOENT (No such file or directory) 8349 open("app/tmp/lu8349pzgegi.tmp", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 ENOENT (No such file or directory)

с TMPDIR=app/tmp

Мы исправили это, установив TMPDIR в каталог, который можно записать пользователем приложения, т. TMPDIR=/tmp на CloudFoundry:

process.env.TMPDIR = "/tmp";

Как сказал Яцек в своем комментарии, сделайте пользователя, которым вы пытаетесь выполнить команду, как sudoer, без пароля. Затем измените команду libreoffice, чтобы она была

 sudo libreoffice <rest of command> 

Работал для меня. Я была такая же проблема.

У меня была такая же ошибка, но проблема была не в корневом доступе. Команда была неправильной.

Это сработало для меня, получив текст из документа в LibreOffice 4.2 .:

 soffice --headless --convert-to txt:Text file_to_convert.odt 

( http://ask.libreoffice.org/en/question/14130/how-do-i-install-filters-for-the-soffice-command/ )

Вы не можете запустить libreoffice soffice двоичный с пользователем www-data. Вместо этого используйте пользователя с привилегиями sudo. Проверьте мой Gist https://gist.github.com/nathanielvarona/423bda9e4a8a4f0f9bbf#file-soffice-listener-sh

И так как вы собираетесь использовать это в PHP. Просто попробуйте PHP-FPM. Установите его, а затем измените файл /etc/php5/fpm/pool.d/www.conf.

Из

 user = www-data group = www-data 

Для того, чтобы:

 user = ubuntu group = ubuntu 

Я успешно запускаю это в AWS EC2, а также с VBox VM.

Я бы посмотрел

http://dag.wieers.com/home-made/unoconv/

Этот инструмент должен быть более подходящим для правильного преобразования ваших файлов. Он доступен в репозиториях ubuntu, поэтому проблем с установкой не должно быть.