无法通过 PHP 可执行文件执行 DOC 到 PDF 的转换命令


Unable to execute DOC to PDF conversion command via PHP exec

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

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

操作系统 : CentOS 6.4 最终版

任何帮助或建议都非常值得赞赏。谢谢

首先检查为/var/www 文件夹授予的权限。给apache:apache作为/var/www/的主人。

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

sudo yum install openoffice.org-headless

这在 centOS 中对我有用。

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

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

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

  1. 首先,我会尝试为命令提供绝对路径。

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

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

    -

    -转换为pdf:writer_pdf_Export

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

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

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

    $

    mkdir ${HOME}/lo_pdfs

  6. 这在带有LibreOffice v4.4.3.2的Mac OS X Mavericks 10.9.5上对我有用(使用我的二进制办公室的特定路径,无论如何对您来说都是不同的......

    /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

如果这不起作用,请尝试此答案命令 'libreoffice --无头 --convert-to pdf test.docx --outdir/pdf' 不起作用