1

我无法使用 php exec 函数在用户 apache 下执行以下命令。

exec('/usr/bin/libreoffice --headless --convert-to pdf --outdir /var/www/html/ /var/www/html/coverpage.doc');

操作系统:CentOS 6.4 最终版

任何帮助或建议都是非常可观的。谢谢

4

3 回答 3

1

首先检查 /var/www 文件夹的权限。apache:apache作为所有者给予/var/www/

如果未安装,请使用以下命令安装 libreoffice 无头软件包。

sudo yum install openoffice.org-headless

这在centOS中对我有用。

于 2013-11-14T04:43:20.047 回答
0

可能有很多原因,首先将命令错误输出重定向到文件,然后从那里继续进行故障排除:

exec('/usr/bin/libreoffice --headless --convert-to pdf --outdir /var/www/html/ /var/www/html/coverpage.doc 2> /tmp/error.txt');

运行脚本后检查 /tmp/error.txt。

于 2013-11-12T10:32:45.217 回答
0
  1. 我首先会尝试给出命令的绝对路径。

  2. 我怀疑 libreoffice 二进制文件不起作用——您必须找到 soffice 二进制文件并查看它是否有效。

  3. 然后,您的 --convert-to pdf 是不够的。它需要是:

    --convert-to pdf:writer_pdf_Export

  4. 接下来,如果您的系统上已经有一个 LibreOffice GUI 实例启动并运行,该命令将不起作用。将此附加参数添加到您的命令中:

    “-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}”

  5. 此外,请确保您指定的 --outdir /pdf 确实存在,并且您对其具有写入权限。或者,宁可使用不同的输出目录。即使只是第一次测试和这一轮调试:

    $ mkdir ${HOME}/lo_pdfs

  6. 这适用于我在 Mac OS X Mavericks 10.9.5 和 LibreOffice v4.4.3.2 上(使用我的二进制 soffice 的特定路径,无论如何对你来说都是不同的......)。

    /path/to/soffice                                                     
    

    --headless

    "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"

    --convert-to pdf:writer_pdf_Export

    --outdir ${HOME}/lo_pdfs path/to/test.docx

如果这不起作用,请尝试此答案 Command `libreoffice --headless --convert-to pdf test.docx --outdir /pdf` is not working

于 2015-11-03T10:47:49.657 回答