您好我有同样的问题,我想从用 PHP 创建的 DOCS 转换 PDF,我使用 OpenSuse 12.3 和 LibreOffice,尝试了很多东西,最后我检测到错误在文件夹中:
1.-首先检查您没有在php.ini中禁用shell_exec,并且open_basedir没有限制您的访问文件夹。
2.- 在 shell(终端)中以简单用户身份运行命令
export HOME=/tmp && soffice --headless --convert-to pdf --outdir /srv/www/htdocs/ /srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx
3.- 如果它有效,您只需将正确的文件夹放入您的代码中,当我在 PHP 中运行此代码时,它会显示一个空白页面,因此我检查 apache 的 access_log 是否有任何提示:
[Java 框架] 函数 createSettingsDocument (elements.cxx) 中的错误。
javaldx 失败!
警告:无法从 javaldx 读取路径
在抛出 'com::sun::star::uno::RuntimeException' 的实例后调用终止
注意:我的错误是在使用 export HOME=/tmp, 我检查了根系统中的文件夹有 777 用于 tmp,但问题是 apache 无法访问它,也许搜索脚本的相对文件夹,但在测试了很多东西后,我只放置了一个允许 wwwrun HOME=/srv/www/htdocs/folder_with_777 的文件夹
这是我的最终代码,有效..
<?php
function word2pdf()
{
echo "Procesando";
$result = shell_exec('export HOME=/srv/www/htdocs/Creecimientos/sic/ && soffice --headless --convert-to pdf --outdir /srv/www/htdocs/Creecimientos/sic/ /srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx');
echo $result;
}
word2pdf();
?>
实际上,它会打印:使用 writer_pdf_Export 转换 srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx -> /srv/www/htdocs/Creecimientos/sic//8_Pagare_CreePersonas.pdf , 成功后。
我之前在绝望模式下进行了其他更改,但都没有解决问题,尝试将所有者更改为 soffice,发现它是 ww $ ls -l $(which libreoffice),尝试使用 777 等。