从ssh2_exec获得结果

时间:2012-08-23 07:10:56

标签: php

我有一个与服务器建立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返回一个空字符串。

那么可以将脚本的结果打印出来吗?

2 个答案:

答案 0 :(得分:39)

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

因此,要输出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);

答案 1 :(得分:1)

添加:

echo stream_get_contents($stream);

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

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