Я пытаюсь запустить команду 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, очень ценится!