Я считаю, что это так же, как этот вопрос но решение не было предоставлено.
У меня есть запрос, который использует PSExec для выполнения сетевого сеанса на сервере профилей, и он отлично работает, когда вводится из командной строки, как показано ниже:
psexec \\profile-server -u username -p password net session
Он покажет баннер PSExec (из stderr), а затем результаты запроса (из stdout).
Тем не менее, когда я запускаю это из PHP, я вижу только канал stderr (как при отправке на экран, так и в файл), но не вижу stdout вообще. Когда я перенаправляю стандартный вывод в файл, файл становится пустым.
Вот PHP:
<?php
$uname_prof = "DOMAIN-USERNAME";
$pw_prof = "DOMAIN-PASSWORD";
$ip = "PROFILE-SERVER";
$query = "psexec.exe \\\\$ip -u $uname_prof -p $pw_prof net session";
$result = exec($query, $output);
echo implode('<br>', $output);
?>
Спасибо!
насколько я понимаю, вы хотите объединить stderr и stdout, чтобы у вас были все выходные данные из psexec.exe в переменной $ output:
$query = "psexec.exe \\\\$ip -u $uname_prof -p $pw_prof net session 2>&1";
если это правильно, просто поставьте 2>&1 в конце вашей команды
вот ссылка с дополнительной информацией о перенаправлении stderr Есть ли способ перенаправить ТОЛЬКО stderr на стандартный вывод (не объединяя два), чтобы он мог быть передан другим программам?
Других решений пока нет …