Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Running headless Ubuntu server 12.something.

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

Works like a charm.


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...

Damn.


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...

Damn.

Anyone have any idea? Trying to research this just confused me more. Is this probably a bug or some dependency quirk?

like image 733
Greg Avatar asked Aug 24 '12 00:08

Greg


4 Answers

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.

like image 175
greatmatter Avatar answered Nov 12 '22 11:11

greatmatter


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";

like image 41
Matthias Winzeler Avatar answered Nov 12 '22 11:11

Matthias Winzeler


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
like image 36
sNICkerssss Avatar answered Nov 12 '22 11:11

sNICkerssss


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/)

like image 37
markling Avatar answered Nov 12 '22 12:11

markling