无法通过PHP exec执行DOC到PDF转换命令

时间:2013-11-12 10:19:40

标签: php pdf centos libreoffice

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

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

OS:CentOS 6.4 Final

任何帮助或建议都非常值得注意。感谢

3 个答案:

答案 0 :(得分:1)

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

如果未安装libreoffice headless package,请使用以下命令安装。

sudo yum install openoffice.org-headless

这在centOS中对我有用。

答案 1 :(得分: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。

答案 2 :(得分:0)

  1. 我首先尝试给出命令的绝对路径。

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

  3. 然后,你的--convert-to pdf是不够的。它必须是:

    - convert-to pdf:writer_pdf_Export

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

    " -env:UserInstallation =文件:/// 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

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