#php #windows #pdf #iis #libreoffice
#php #Windows #PDF #iis #libreoffice
Вопрос:
Я пытаюсь сгенерировать PDF из docx с помощью soffice, поэтому я пробую это в apache Linux и его works, но я пытаюсь в 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 Файлы Libreoffice и хранилище / приложение также имеют разрешение. В IIS включена анонимная аутентификация.
Я запускаю php и он возвращает «строку (26) «iis apppool defaultapppool» »
$var = exec('whoami');
var_dump($var);
Я не знаю, как я могу это исправить.
Ответ №1:
Я решил это, создав нового пользователя в Windows с низким разрешением для запуска команды, подобной этому пользователю. Я устанавливаю SysinternalsSuite для запуска команды 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:SysinternalsSuitepsexec.exe" -u DOMAINUSER -p PASSWORD "C:Program FilesLibreOfficeprogramsoffice.exe" --headless --convert-to pdf:writer_pdf_Export --outdir C:inetpubwwwrootstorageappACTIVO2019-033404docx C:inetpubwwwrootstorageappACTIVO2019-033404docxdocumento_word.docx';