我们现在使用libreoffice --headless
了一段时间,首先是通过 Debian,在过去的几个月里我们切换到了 CentOS。我们正在使用Symfony Process命令将 a 转换docx
为pdf
,简化的命令如下所示:
libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx
执行上述命令的 Symfony 进程非常简单:
$process = new Process($cmd);
$process->mustRun();
一切正常,但几天后转换不再完成,并且该过程一直处于等待状态,直到达到 60 秒超时。
通过在我们的服务器上进行完全相同的转换来调试它DEV
,一切都很好。还尝试转换大小文档,以查看或达到超时的页数。是否也直接在命令行上执行了命令,转换也可以并在几秒钟内完成。
异常被我们的应用程序捕获,并被发送到记录器:
进程 \"/usr/bin/libreoffice --headless --nologo --nofirststartwizard --norestore --convert-to pdf:writer_web_pdf_Export --outdir /home/conversionoutdir /home/conversionindir/4f00ac05aee274967b.docx\" 超过了超时时间60 秒。
似乎 PHP 无法再跟踪该过程了。这里会发生什么?关于如何进一步调试的任何线索?
编辑:在抽象掉 Symfony 进程组件,将conversionoutdir
权限设置为 777 并执行以下代码段后,如果从 PHP 执行转换仍然会挂起:
$output = array();
exec('libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx', $output);
print_r($output);