Я пытаюсь открыть оболочку powershell.exe с помощью proc_open. Страница интернета продолжает загружаться. Однако это работает для оболочки ‘cmd.exe’. Я не понимаю, какая разница.
Вот мой код
<?php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("file", "error.txt", "a") // stderr
);
$process = proc_open("powershell.exe", $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], "hostname \n");
fclose($pipes[0]);
echo( '<pre>' );
echo stream_get_contents($pipes[1]);
echo( '</pre>' );
fclose($pipes[1]);
$return_value = proc_close($process);
echo "command returned $return_value\n";
}
?>
Рабочий вывод для ‘cmd.exe’, почему он не будет работать для ‘powershell.exe’
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\wamp\bin\apache\Apache2.2.17>hostname
GOKPRAVE-WS01
C:\wamp\bin\apache\Apache2.2.17>
command returned 0
РЕДАКТИРОВАТЬ 1
После просмотра диспетчера задач я понимаю, что powershell.exe создает cmd.exe в фоновом режиме. Есть ли способ, которым я могу получить ссылку на дочерние процессы в PHP через ‘proc_open’
Задача ещё не решена.
Других решений пока нет …