无法通过PHP exec执行文档到PDF的转换命令

无法通过PHP exec执行文档到PDF的转换命令,php,pdf,centos,libreoffice,Php,Pdf,Centos,Libreoffice,我无法使用php exec函数在用户apache下执行以下命令 exec('/usr/bin/libreoffice --headless --convert-to pdf --outdir /var/www/html/ /var/www/html/coverpage.doc'); 操作系统:CentOS 6.4决赛 任何帮助或建议都是非常值得赞赏的。感谢可能有很多原因,首先将命令错误输出重定向到文件,然后从那里继续进行故障排除: exec('/usr/bin/libreoffice--hea

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

exec('/usr/bin/libreoffice --headless --convert-to pdf --outdir /var/www/html/ /var/www/html/coverpage.doc');
操作系统:CentOS 6.4决赛


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

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

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


运行脚本check/tmp/error.txt.

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

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


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

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

如果未安装libreoffice headless软件包,请使用以下命令安装该软件包

sudo yum install openoffice.org-headless

这在centOS中对我有效。

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

如果未安装libreoffice headless软件包,请使用以下命令安装该软件包

sudo yum install openoffice.org-headless
这在centOS对我很有效

  • 首先,我会尝试给出命令的绝对路径

  • 我怀疑libreoffice二进制文件不起作用——您必须找到soffice二进制文件,看看它是否起作用

  • 那么,您的--convert-to-pdf是不够的。它需要:

    --转换为pdf:writer\u pdf\u导出

  • 接下来,如果您的系统上已经有一个libreofficegui实例正在运行,那么该命令将不起作用。将此附加参数添加到命令:

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

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

    $mkdir${HOME}/lou PDF

  • 这适用于我在Mac OS X Mavericks 10.9.5和LibreOffice v4.4.3.2上的工作(使用我的二进制软件的特定路径,这对您来说无论如何都是不同的…)

    --无头

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

    --转换为pdf:writer\u pdf\u导出

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

  • 如果这不起作用,试试这个答案

  • 首先,我会尝试给出命令的绝对路径

  • 我怀疑libreoffice二进制文件不起作用——您必须找到soffice二进制文件,看看它是否起作用

  • 那么,您的--convert-to-pdf是不够的。它需要:

    --转换为pdf:writer\u pdf\u导出

  • 接下来,如果您的系统上已经有一个libreofficegui实例正在运行,那么该命令将不起作用。将此附加参数添加到命令:

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

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

    $mkdir${HOME}/lou PDF

  • 这适用于我在Mac OS X Mavericks 10.9.5和LibreOffice v4.4.3.2上的工作(使用我的二进制软件的特定路径,这对您来说无论如何都是不同的…)

    --无头

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

    --转换为pdf:writer\u pdf\u导出

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

  • 如果这不起作用,试试这个答案

    是否使用php pdf类?dompdf、tcpdf、phpexcel、phpword等如果单独使用该命令会发生什么情况?你的PHP是以什么用户的身份运行的?该用户是否有权访问可执行文件?@H2Oooo:通过直接ssh,该命令工作正常。但是通过php它不起作用。PHP正在用户apache下运行。@LX7然后我会再次询问-然后运行命令。那么它工作得好吗?@LX7还是使用php pdf类?dompdf、tcpdf、phpexcel、phpword等如果单独使用该命令会发生什么情况?你的PHP是以什么用户的身份运行的?该用户是否有权访问可执行文件?@H2Oooo:通过直接ssh,该命令工作正常。但是通过php它不起作用。PHP正在用户apache下运行。@LX7然后我会再次询问-然后运行命令。那么它工作正常吗?@LX7或问题是无头软件包,我已经解决了。:)。不管怎样,谢谢。问题是无头包装,我已经解决了。:)。无论如何,谢谢。