我从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() 调用。您可以通过在 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 的罪魁祸首。
然后继续这样做,直到出现段错误。在 stream_select 之前和之后以及任何地方执行 die('this far');
。然后发布您正在使用的行。
关于php - 使用 phpseclib 时为 "Segmentation fault",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205752/