运行无头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...
该死。
任何人都有任何想法?试图研究这个让我更加困惑。这可能是一个错误还是一些依赖怪癖?
答案 0 :(得分:15)
我终于找到了答案...... 添加:
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()。
答案 1 :(得分:4)
我们在CloudFoundry(Diego)容器中运行soffice
二进制无头(LibreOffice 5.0.5.2)作为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
设置为可由应用进程'用户编写的目录(即CloudFoundry上的TMPDIR=/tmp
)来修复它:
process.env.TMPDIR = "/tmp";
答案 2 :(得分:1)
所有您需要做的-创建文件夹“ /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
答案 3 :(得分:0)
正如Jacek在他的评论中所述,让用户尝试执行命令作为sudoer而不需要密码。然后将libreoffice命令更改为
sudo libreoffice <rest of command>
为我工作。我有同样的问题。
答案 4 :(得分:0)
我能够通过以下方法解决此问题:首先删除文件,然后运行转换文件。似乎由于文件所有者问题,文件覆盖失败。
答案 5 :(得分:0)
对我来说,这是因为输出文件夹无法写。使用--outdir
并指定可写文件夹。
如果输出文件已经存在,它将自动覆盖。
示例:
$ libreoffice --headless --convert-to pdf --outdir myfolder/ myfile.docx
答案 6 :(得分:-1)
答案 7 :(得分:-1)
您无法使用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 VM中运行它。