我从http://phpseclib.sourceforge.net/
下载了 phpseclib-0.3.10我的PHP版本: PHP 5.2.4
操作系统:CentOS版本6.6
当我运行以下时,我会在此行$ssh->login('username', 'password')
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SSH2.php');
$ssh=new Net_SSH2('servername');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('pwd');
?>
我无法找到此问题的原因。能否请你帮我找到原因。
答案 0 :(得分:0)
我的猜测:fsockopen()调用或stream_select()调用。您可以通过在login()中的连续点和其中调用的函数中将die()放入代码中来解决这个问题。
查找... login()调用_login():
https://github.com/phpseclib/phpseclib/blob/0.3.10/phpseclib/Net/SSH2.php#L1801
_login()调用_connect():
https://github.com/phpseclib/phpseclib/blob/0.3.10/phpseclib/Net/SSH2.php#L1817
例如。在line 964 in Net/SSH2.php之前添加die('this far')
。如果它说“这么远”,那么尝试添加它。如果你遇到一个段错误,但是在它之前而不是之前,这可能意味着它应该是fsockopen的责任。
继续这样做,直到你遇到seg故障。在stream_select之前和之后做一个die('this far');
并且只是在哪里。然后发布你正在接收它的行。