2015-06-26 85 views
0

運行在PHP 5.2.13這工作得很好:phpseclib - 用php版本問題

輸出的每一行顯示..

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返回任何內容相同的代碼。

我不得不使用像

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

,並等待它超時。

任何想法爲什麼這不適用於新版本?

謝謝

+1

PHP 5.2和5.3有很多不同之處。嘗試添加'error_reporting(E_ALL); ini_set('display_errors','1');'進入腳本的開頭,它會顯示錯誤。 – stepozer

+0

謝謝 - 我已經添加了,並重新運行它只是繼續運行的腳本 - 沒有錯誤等顯示在屏幕上或在error_log! – Rocket

+0

您使用的是什麼版本的Net_SSH2? – stepozer

回答

2

嘗試使用新的NET_SSH2版本。我用作曲者,你的代碼適合我(我的本地PC上有PHP 5.6)。我的步驟是:

1)我創建新的空文件夾

2)運行作曲:

作曲家需要 「phpseclib/phpseclib」

這將創造vendor文件夾NET_SSH2版本= 0.3.9

3)然後我改變了你的源代碼(作曲家自動載入):

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

而且一切正常。我認爲你有這個問題,因爲你正在使用舊的庫版本。您可以嘗試使用作曲家或從GitHub下載新的庫版本。

我希望這會有所幫助。

+0

將phpseclib的版本升級到更新的版本爲我解決了這個問題。 – Rocket