使用phpseclib

时间:2015-05-13 04:34:32

标签: php ssh centos phpseclib

我从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');
?>

我无法找到此问题的原因。能否请你帮我找到原因。

1 个答案:

答案 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');并且只是在哪里。然后发布你正在接收它的行。