phpseclib - issues with php versions

时间:2015-06-26 16:12:14

标签: php phpseclib

Running on PHP 5.2.13 this works fine :

each line of output is shown..

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');

Running the same code on PHP 5.3.17 returns nothing.

I'd have to use something like

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

And wait for it to time out.

Any idea why this isn't working on the new version ?

Thanks

1 个答案:

答案 0 :(得分:2)

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

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

2)运行composer:

  

作曲家需要“phpseclib / phpseclib”

这将创建具有NET_SSH2版本= 0.3.9的vendor文件夹

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下载新的库版本。

我希望它会有所帮助。