【问题标题】:Running (Generate PDF) soffice LibreOffice on Windows PHP exec() doesn't work在 Windows PHP exec() 上运行(生成 PDF)soffice LibreOffice 不起作用
【发布时间】:2019-03-19 15:00:51
【问题描述】:

我正在尝试使用 soffice 从 docx 生成 pdf,因此我在 apache linux 及其工作原理上进行尝试,但我在 windows server 2012 和 IIS 6.2 中尝试。

如果我在 CMD 上运行此命令,它的工作原理:

soffice --headless --convert-to pdf:writer_pdf_Export --outdir  ../../storage/app/ACTIVO/2019-03/3404/docx/ ../../storage/app/ACTIVO/2019-03/3404/docx/documento_word.docx

所以在 PHP 中我试试这个:

$comando = 'soffice --headless --convert-to pdf:writer_pdf_Export --outdir  ../../storage/app/ACTIVO/2019-03/3404/docx/ ../../storage/app/ACTIVO/2019-03/3404/docx/documento_word.docx';
$var = exec($comando);
var_dump($var);

它给我“NULL”

当我尝试在 PHP 中使用 soffice --version 时也会发生同样的情况。

我在 C:\Program Files\Libreoffice 中授予 IUSR 完全权限,并且 storage/app 也有权限。在 IIS 中启用了匿名身份验证。

我在 php 中运行,它的返回 "string(26) "iis apppool\defaultapppool" "

$var = exec('whoami');
var_dump($var);

我不知道我该怎么做才能解决它。

【问题讨论】:

    标签: php windows pdf iis libreoffice


    【解决方案1】:

    我解决了这个问题,在 Windows 中创建了一个新用户,该用户运行类似该用户的命令的权限较低。 一世 nstallSysinternalsSuite运行psexec命令,zip解压到C:\

    所以,我改变的那一行是:

    $comando = 'soffice --headless --convert-to pdf:writer_pdf_Export --outdir  ../../storage/app/ACTIVO/2019-03/3404/docx/ ../../storage/app/ACTIVO/2019-03/3404/docx/documento_word.docx';
    

    到:

    $comando = '"C:\SysinternalsSuite\psexec.exe" -u DOMAIN\USER -p PASSWORD "C:\Program Files\LibreOffice\program\soffice.exe" --headless --convert-to pdf:writer_pdf_Export --outdir  C:\inetpub\wwwroot\storage\app\ACTIVO\2019-03\3404\docx\ C:\inetpub\wwwroot\storage\app\ACTIVO\2019-03\3404\docx\documento_word.docx';
    

    【讨论】:

      猜你喜欢
      • 2018-10-19
      • 2012-02-21
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多