我从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/

10-11 07:02