Libreoffice – 没有头文件会拒绝转换,除非root用户不能使用PHP脚本

运行无头Ubuntu服务器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 

奇迹般有效。


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

该死的。

任何人有任何想法? 试图研究这只是让我更困惑。 这可能是一个错误或一些依赖的怪癖?

Solutions Collecting From Web of "Libreoffice – 没有头文件会拒绝转换,除非root用户不能使用PHP脚本"

我终于找到了答案…添加:

 export HOME=/tmp && 

到一开始,那么:

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

这在CentOS 6.5上适用于我,在PHP中适用于shell_exec()。

在CloudFoundry(Diego)容器中运行soffice binary headless(LibreOffice 5.0.5.2)作为NodeJS应用程序的一部分时,我们遇到了同样的问题。

看来libreoffice更新版本并不期望可写入HOME ,而是尝试写入TMPDIR

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设置为可由App进程用户写入的目录(即,在CloudFoundry上的TMPDIR=/tmp来修复它:

process.env.TMPDIR = "/tmp";

就像Jacek在他的评论中所说的那样,让用户试图以无需密码的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/

您不能使用www-data用户运行libreoffice soffice二进制文件。 改用sudo权限来使用用户。 检查我的要点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虚拟机。

我会看看

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

这个工具应该更适合转换你的文件。 这是在Ubuntu的回购,所以应该没有安装问题。