Запуск команд Powershell из PHP

Я пытаюсь запустить команду PowerShell из файла php на своем веб-сервере.

Вот мой php-код:

<?php
$query = shell_exec('C:\\Windows\\syswow64\\WindowsPowerShell\\v1.0\\powershell.exe -command Get-Host');
echo $query;
?> 

В результате я получаю ошибку HTTP 500 - C:\PHP\php-cgi.exe - Процесс FastCGI превысил настроенное время ожидания активности - Код ошибки 0x80070102

Чтобы выполнить тест, чтобы убедиться, что shell_exec и php работают (что я ничего не напортачил при настройке среды). Я также пробовал этот php:

<?php
$query = shell_exec('dir c:\\');
echo $query;
?>

Это сработало, исходный код страницы выглядел точно так, как вы ожидаете, если бы вы запустили команду dir c:\ из командной строки в Windows.

Я просмотрел несколько других статей здесь, посвященных stackoverflow, а также о technet, и, похоже, не могу определить, что вызывает истечение времени ожидания. Когда я запускаю ту же команду из командной строки, результат очень быстрый.

Вот результаты выполнения той же команды вручную в командной строке (опять же, чего и следовало ожидать):

C:\>C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -command Get-Host


Name             : ConsoleHost
Version          : 2.0
InstanceId       : 9a24a372-f0a3-4a79-b9fd-1e180e9a8069
UI               : System.Management.Automation.Internal.Host.InternalHostUserI
               nterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

Немного о моем окружении:

Я использую IIS 7.5 на стандартном сервере Windows 2008 R2 SP1.

Сервер автономный (не часть домена).

У меня установлен PHP 5.5.9 и работает. phpinfo() возвращает ожидаемую страницу без каких-либо заметных ошибок.

Любая помощь в том, чтобы помочь мне выполнить команды powershell из php, очень ценится!


person Brett    schedule 07.03.2014    source источник


Ответы (1)


Попробуй это :

$query = shell_exec('C:\\Windows\\syswow64\\WindowsPowerShell\\v1.0\\powershell.exe -command Get-Host < NUL');
person PaKempf    schedule 02.09.2014
comment
Привет @Pakempf.. Я столкнулся с той же проблемой .. все еще не исправлено, есть ли какой-нибудь способ исправить это - person vimal kumar; 16.04.2018