我无法使用 php exec 函数在用户 apache 下执行以下命令。
exec('/usr/bin/libreoffice --headless --convert-to pdf --outdir /var/www/html/ /var/www/html/coverpage.doc');
操作系统:CentOS 6.4 最终版
任何帮助或建议都是非常可观的。谢谢
我无法使用 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。
我首先会尝试给出命令的绝对路径。
我怀疑 libreoffice 二进制文件不起作用——您必须找到 soffice 二进制文件并查看它是否有效。
然后,您的 --convert-to pdf 是不够的。它需要是:
--convert-to pdf:writer_pdf_Export
接下来,如果您的系统上已经有一个 LibreOffice GUI 实例启动并运行,该命令将不起作用。将此附加参数添加到您的命令中:
“-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}”
此外,请确保您指定的 --outdir /pdf 确实存在,并且您对其具有写入权限。或者,宁可使用不同的输出目录。即使只是第一次测试和这一轮调试:
$ mkdir ${HOME}/lo_pdfs
这适用于我在 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