
ssh2_send_eof() 함수는 SSH2_STREAM_EOF 상태의 스트림에만 호출할 수 있습니다.
이 오류는 ssh2_exec() 함수로 생성된 스트림은 SSH2_STREAM_EOF 상태가 아닙니다. 따라서 ssh2_send_eof() 함수를 호출할 수 없습니다.
ssh2_exec() 함수로 생성된 스트림은 SSH 명령어를 실행하는 동안 SSH2_STREAM_EXEC 상태에 있습니다. SSH 명령어가 완료되면 SSH2_STREAM_EOF 상태가 됩니다.
따라서 ssh2_send_eof() 함수를 호출하기 전에 ssh2_exec() 함수로 생성된 스트림이 SSH2_STREAM_EOF 상태가 되도록 기다리거나, SSH 명령어를 직접 실행하는 방법을 사용해야 합니다.
예를 들어, 다음 코드는 ssh2_exec() 함수로 생성된 스트림이 SSH2_STREAM_EOF 상태가 되도록 기다립니다.
#hostingforum.kr
php
$ssh = ssh2_connect($host, $port);
ssh2_auth_password($ssh, $username, $password);
$stream = ssh2_exec($ssh, 'ls -l');
stream_set_blocking($stream, true);
stream_set_timeout($stream, 10);
while (!feof($stream)) {
$result = fread($stream, 1024);
if ($result === false) {
break;
}
}
ssh2_send_eof($stream);
또는, SSH 명령어를 직접 실행하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$ssh = ssh2_connect($host, $port);
ssh2_auth_password($ssh, $username, $password);
$result = ssh2_exec($ssh, 'ls -l');
$stream = ssh2_fetch_stream($result, SSH2_STREAM_STDIO);
ssh2_send_eof($stream);
이러한 방법을 사용하면 ssh2_send_eof() 함수를 호출할 수 있습니다.
2025-04-14 11:20