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
答案 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下载新的库版本。
我希望它会有所帮助。