13

我已经在带有 apache 的 freebsd 服务器上安装了 libreoffice headless,以便以编程方式转换文档(例如 odt->pdf)。它可以从命令行工作!但我的目标是能够从 php 中做到这一点。这要求网络用户 (www) 可以运行 libreoffice。但它不能。

以我自己的用户身份运行 libreoffice 时,我得到:

%libreoffice --headless -convert-to pdf Litteraturundervisningogit.doc
javaPathHelper: not found #This should not be a problem, says people on the net.
convert /usr/home/bundsgaard.net/www/jeppe/foredrag/Litteraturundervisningogit.doc ->
 /usr/home/bundsgaard.net/www/jeppe/foredrag/Litteraturundervisningogit.pdf using writer_pdf_Export
%

如果我尝试与 root 相同的命令,它不起作用。php中的www-user问题也是如此:

sp# libreoffice --headless -convert-to pdf Litteraturundervisningogit.doc
javaPathHelper: not found
sp#

问题是我没有从 libreoffice 获得任何信息,因此我不知道为什么 libreoffice 不想以我自己以外的其他用户身份运行。

我的问题是:如何在 php 中通过 exec() 授予 www-user 运行 libreoffice 的权限?

4

8 回答 8

15

在运行 convert 命令之前,我设法快速解决了这个问题export HOME=/tmp,这给了 libreoffice 一个可写的地方来工作,这很神奇。

于 2012-04-17T14:45:03.223 回答
3

不是严格的答案,而是使用 PHP 的 exec,您可以考虑使用PUNO,这是一个 PHP5 模块,提供对 OpenOffice.org UNO 编程 API 的访问。

于 2012-01-29T23:17:57.170 回答
3

你看过这篇博文吗?

http://geekswithblogs.net/robertphyatt/archive/2011/11/19/converting-.docx-to-pdf-or-.doc-to-pdf-or-.doc.aspx

于 2012-04-13T19:52:20.457 回答
2

这对我有用。

确保您已安装 java RE,例如在 ubuntu 中:

apt-get install default-jre

首先,找到你的 libreoffice 的位置

$ which libreoffice
/usr/bin/libreoffice

在 PATH 中包含文件夹位置,并通过添加以下行来设置 HOME 变量:

putenv('PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin');
putenv('HOME=/tmp'); 
system("libreoffice .....
于 2019-03-12T08:59:54.807 回答
1

我遇到了同样的问题,是的(感谢 Wrikken)在添加/usr/local/sbin到 PATH 环境变量之后,我能够在 apache 下将 libreoffice 作为 www-data 运行。

于 2012-02-14T16:48:07.503 回答
1

我建议你先运行 exec() 或 shell_exec();

IE:

// Vars
putenv('PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin');
putenv('HOME=' . $outputdir); 

$outputdir = chmod 777 与 libreoffice 命令“--outdir”相同的 forlder

于 2018-01-28T17:23:09.283 回答
0

关于 通用网络对象 (UNO),有一些“即插即用”的最终用户工具,请参阅DocvertJODConverterjODconverterpyODconverter)。所有这些都可以被 PHP 调用为 web-service 或 exec。

于 2012-11-11T20:45:08.143 回答
0

它对我有用。

您可以使用 libreoffice 将 docx 转换为 HTML,您需要提供适当的权限输出目录

exec("export HOME='/var/www/html/wp/wp-content/uploads/' && /usr/bin/libreoffice --headless   --convert-to html --outdir '/var/www/html/wp/wp-content/uploads/' /var/www/html/wp/wp-content/uploads/demo.docx");
于 2021-09-22T11:28:27.100 回答