Windows позволяет пользователю запускать команды
В Windows XP я могу запустить много команд из PHP с помощью функции shell_exec().
Мне нужно использовать OfficeToPDF на Windows 10 с PHP. Мой PHP-скрипт:
<?php
$command = 'OfficeToPDF input.docx output.pdf';
$exec = shell_exec($command);
echo $exec;
?>
Этот скрипт работает в Windows XP Professional, но не в Windows 7, 8, 10. OfficeToPdf просто открывает Microsoft Word и сохраняет файл в формате PDF. Что изменилось на win7, win8, win10? Почему я не смог выполнить эту команду из PHP на новых ОС?
У меня сервис apache запускается автоматически от пользователя SYSTEM.
ОБНОВЛЕНИЕ: Но я могу бежать OfficeToPDF input.docx output.pdf
Команда, когда я открываю окно cmd вручную.
1 ответ
Я подозреваю, что некоторые переменные среды отсутствуют, которые необходимы. Вы должны попробовать запустить его из экземпляра командного окна, который установит env vars по умолчанию:
$ command = 'cmd / c OfficeToPDF input.docx output.pdf'; $ exec = shell_exec ($ command); echo $ exec;
Возможно, вы захотите использовать полный путь к OfficeToPDF, input.docx и output.pdf, если каталог по умолчанию неверен, или сначала вызовите chdir().
Значение /C является:
/C Выполняет команду, указанную в строке, а затем завершается