运行(生成 PDF)Windows PHP 上的 soffice LibreOffice exec() 不起作用

Running (Generate PDF) soffice LibreOffice on Windows PHP exec() doesn't work

我正在尝试使用 soffice 从 docx 生成 pdf,所以我在 apache linux 及其作品上尝试它,但我在 windows 服务器 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 和 storage/app 中完全授予 IUSR 权限。在 IIS 中启用了匿名身份验证。

I 运行 in php 及其 return " string(26) "iis apppool\defaultapppool" "

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

我不知道该如何修复它。

我解决了,在 Windows 中创建了一个新用户,对 运行 的命令权限较低,类似于该用户。 我 nstall SysinternalsSuite to 运行 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\ACTIVO19-0304\docx\ C:\inetpub\wwwroot\storage\app\ACTIVO19-0304\docx\documento_word.docx';