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 Выполняет команду, указанную в строке, а затем завершается

Другие вопросы по тегам