我从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');
?>
我找不到此问题的原因。您能帮我找到原因吗?
最佳答案
我的猜测:是fsockopen()调用还是stream_select()调用。您可以通过将die()的代码放在login()中的连续点以及其中调用的函数中来弄清楚。
查找... 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。
并继续这样做,直到遇到段错误。在stream_select之前和之后以及任何地方执行die('this far');
。然后发布该行。
关于php - 使用phpseclib时"Segmentation fault",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30205752/