phpseclib - php 版本的问题

phpseclib - issues with php versions

运行 在 PHP 5.2.13 上工作正常:

显示每行输出..

include('includes/Net/SSH2.php');
$ssh = new Net_SSH2('127.0.0.1');

if (!$ssh->login('root', 'password')) {
    exit('Login Failed');
}

function packet_handler($str)
{
    echo $str;
}

$ssh->exec('ping 127.0.0.1', 'packet_handler');

运行 PHP 5.3.17 returns 没有相同的代码。

我必须使用类似

的东西
echo $ssh->exec('timeout 5 ping 127.0.0.1');

并等待它超时。

知道为什么这在新版本上不起作用吗?

谢谢

尝试使用新的 NET_SSH2 版本。我使用了 composer,您的代码对我来说效果很好(我的本地 PC 上有 PHP 5.6)。我的步骤是:

1) 我创建了新的空文件夹

2) 运行作曲家:

composer require "phpseclib/phpseclib"

这将创建 vendor 文件夹,NET_SSH2 版本 = 0.3.9

3) 然后我更改了你的源代码(用于 composer autoload):

require 'vendor/autoload.php'; 
$ssh = new Net_SSH2('127.0.0.1');

if (!$ssh->login('root', 'password')) {
    exit('Login Failed');
}

function packet_handler($str) {
    echo $str;
}

$ssh->exec('ping 127.0.0.1', 'packet_handler');

并且一切正常。我认为您遇到问题是因为您使用的是旧库版本。您可以尝试使用 composer 或从 GitHub.

下载新的库版本

希望对您有所帮助。