16

我有一个与服务器建立 SSH 连接的脚本(这工作正常)。现在我想执行一个命令并回显我从这个命令得到的结果。

所以我这样做:

$stream = ssh2_exec($conn, 'php -v');

但我无法让它显示响应,var_dump返回resource(3) of type (stream)

我曾尝试使用:

$stream = ssh2_exec($conn, 'php -v');
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

$stream_out返回一个空字符串。

那么是否可以将响应打印为脚本的结果?

4

2 回答 2

49

好的,我找到了解决方案,所以我将其发布以供将来参考

因此,要输出 ssh2_exec 执行的命令的结果,您应该使用以下代码设置

$stream = ssh2_exec($conn, 'php -v');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
于 2012-08-23T15:12:20.397 回答
2

添加:

echo stream_get_contents($stream);

结果是 STREAM,你必须先获取它的内容......

stream-fetch 仅用于获取备用子流...(afaik)

于 2012-08-23T07:20:05.000 回答