12

运行无头 Ubuntu 服务器 12.something。

根@服务器:chown www-data /my/path/ -R

根@服务器:chgrp www-data /my/path/ -R

根@服务器:chmod 755 /my/path/ -R

根@服务器:libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

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

奇迹般有效。


根@服务器: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...

该死。


根@服务器: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...

该死。

有人知道吗?试图研究这个让我更加困惑。这可能是一个错误还是一些依赖怪癖?

4

8 回答 8

22

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

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() 上对我有用。

于 2015-01-17T02:48:19.037 回答
5

您需要做的所有事情 - 创建文件夹“/var/www/.config”。当您尝试在 www-data 用户 libreoffice 下转换某些文件时,需要用户主目录中的“.config”目录。但是 libreoffice 没有创建此类文件夹的权限。用户 www-data 默认主目录是“/var/www”。所以只需运行命令:

sudo mkdir /var/www/.config
sudo chmod 700 /var/www/.config
sudo chown www-data /var/www/.config
于 2018-06-27T16:15:11.320 回答
5

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

似乎较新版本的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为 App 进程用户可写的目录来修复它,即TMPDIR=/tmp在 CloudFoundry 上:

process.env.TMPDIR = "/tmp";

于 2016-04-12T06:36:34.847 回答
2

我有同样的错误,但问题不是root访问。命令是错误的。

这对我有用,从 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/

于 2015-05-08T10:38:59.233 回答
0

对我来说,这是由于不可写的输出文件夹。使用--outdir并指定一个可写文件夹。

如果输出文件已经存在,它将自动覆盖。

例子:

$ libreoffice --headless --convert-to pdf --outdir myfolder/ myfile.docx
于 2020-07-24T06:27:32.603 回答
0

我可以通过先删除文件然后运行转换文件来解决这个问题。看起来由于文件所有者问题,文件的覆盖失败。

于 2019-01-30T08:33:35.457 回答
-1

就像 Jacek 在他的评论中所说的那样,将您尝试执行命令的用户设置为不需要密码的 sudoer。然后将您的 libreoffice 命令更改为

sudo libreoffice <rest of command>

为我工作。我遇到过同样的问题。

于 2013-07-03T21:20:05.283 回答
-3

您不能使用 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 虚拟机中成功运行了它。

于 2014-05-07T07:58:18.230 回答