我无法使用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 是不够的。它需要:
--转换为pdf:writer_pdf_Export
-
接下来,如果您的系统上已经启动并运行了 LibreOffice GUI 实例,则该命令将不起作用。将此附加参数添加到命令中:
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
-
此外,请确保您指定的 --outdir/pdf 确实存在,并且您具有写入权限。或者,更确切地说,使用不同的输出目录。即使只是第一次测试和这一轮调试:
$mkdir ${HOME}/lo_pdfs
-
这在带有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' 不起作用