Libreoffice --headless refuses to convert unless root, won't work from PHP script

倖福魔咒の 提交于 2019-11-29 09:24:51

I finally found an answer to this... Add:

export HOME=/tmp &&

to the beginning, so:

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

That worked for me on CentOS 6.5, and as shell_exec() in PHP.

We faced the same issue when running the soffice binary headless (LibreOffice 5.0.5.2) in a CloudFoundry (Diego) container as part of a NodeJS app.

It seems newer versions of libreoffice do not expect a writeable HOME, but try to write to TMPDIR.

strace showed: 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)

with TMPDIR=app/tmp

We fixed it by setting TMPDIR to a directory that is writeable by the App process' user, i.e. TMPDIR=/tmp on CloudFoundry:

process.env.TMPDIR = "/tmp";

I had this same error, but the problem wasn't root access. The command was wrong.

This worked for me, getting text from a doc in 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/)

All what you need to do - create folder "/var/www/.config". When you try to convert some file under www-data user libreoffice require ".config" dir in user's home directory. But libreoffice has no permissions to create such folder. User www-data default home directory is "/var/www". So just run commands:

sudo mkdir /var/www/.config
sudo chmod 700 /var/www/.config
sudo chown www-data /var/www/.config

I was able to get over this issue by deleting the file first and then running the convert file. Looks like the overwrite of the file failed due to file owner issues.

I would take a look on

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

This tool should be more suited to convert your files properly. It is available on the ubuntu repos, so there should be no problem with installation.

Much as Jacek stated in his comment, make the user you are trying to execute the command as a sudoer with no password required. Then change your libreoffice command to be

sudo libreoffice <rest of command>

Worked for me. I had the same issue.

You can not run libreoffice soffice binary with www-data user. Use a user with sudo privilege instead. Check my Gist https://gist.github.com/nathanielvarona/423bda9e4a8a4f0f9bbf#file-soffice-listener-sh

And since you are going to use this in PHP. Just give a try also to PHP-FPM. Install it and then modify the /etc/php5/fpm/pool.d/www.conf file.

From

user = www-data 
group = www-data

To:

user = ubuntu
group = ubuntu

I've successfully run this in AWS EC2 and also with my VBox VMs.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!