我有一个与服务器建立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
返回一个空字符串。
那么可以将脚本的结果打印出来吗?
答案 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)