Захват вывода консоли из proc_open

Я использую proc_open для запуска сеанса telnet, подключающегося к серверной программе. Соединение в порядке, но когда я получаю ответ, я не могу сохранить всю строку в файле, так как он обрезается после некоторых символов.

Вот мой фрагмент:

$descriptorSpec = array( 0 => array( "pipe", "r" ),  
                         1.=> array( "file", $logPath, "w" ) );  
$process = proc_open( "telnet localhost 2323", $descriptorSpec, $pipes );  
fwrite( $pipes[0], "helo" . PHP_EOL );
fwrite( $pipes[0], "quit" . PHP_EOL );

Я также пытался использовать netcat и exec:

exec( "echo \"helo quit\" | netcat localhost 2323 >> $logPath" );  

но у меня был тот же результат.

Если я запускаю команду telnet / netcat из консоли, я получаю всю строку в stdout, но если я пытаюсь перенаправить ее в другой файл, я получаю ту же ошибку, что и выше.

1 ответ

$smtpConnect = fsockopen($server, 25, $errno, $errstr, 2)){
$smtpResponse = fgets($smtpConnect);
$logArray['connection'] = $smtpResponse;
echo $logArray['connection'];
fputs($smtpConnect, "EHLO LOCALHOST". "\n\r");
$smtpResponse = fgets($smtpConnect);

попробовать что-нибудь в этом направлении?

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