Запуск (Создать PDF) soffice LibreOffice в Windows PHP exec () не работает - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь сгенерировать pdf из docx, используя soffice, поэтому я пробую его на 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"

То же самое происходит, когда я пытаюсь использовать soffice--version в PHP.

Я даю полное разрешение IUSR в C: \ Program Files \ Libreoffice, а также для хранилища / приложения.В IIS включена анонимная аутентификация.

Я запускаю в php и возвращаю " string (26)" iis apppool \ defaultapppool ""

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

Донне знаю, как я могу это исправить.

1 Ответ

0 голосов
/ 22 марта 2019

Я решил, создав нового пользователя в Windows с низким разрешением для запуска такой команды. я nstall SysinternalsSuite для запуска команды psexec, архив распаковывается в 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';
...