php - 使用 phpseclib 时为 "Segmentation fault"

标签 php ssh centos phpseclib

我从http://phpseclib.sourceforge.net/ 下载了phpseclib-0.3.10

我的 php 版本:PHP 5.2.4

操作系统:CentOS 6.6 版

当我运行以下命令时,我在这一行 $ssh->login('username', 'password')

收到“Segmentation fault”
<?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/

相关文章:

windows-7 - 使用 cygwin 为 hadoop 安装 ssh

linux - CentOS 6.5 编译内核源代码看到 "LINUX_VERSION_CODE"未设置

php - PHP 5.3.8 上的 fileinfo Mime 类型检测失败

javascript - 自动完成 JQuery UI 不工作?

PHP 获取 URL 参数及其值

hadoop - 没有密码的 SSH 连接不起作用

centos - 无法在 CentOS 上使用 setsockopt 设置 TCP_NODELAY

javascript - 如何根据一个值过滤值并替换为相应的名称

javascript - TYPO3 ajax 无法确定扩展和插件的默认 Controller

git - Docker:如何使用 ssh 访问私有(private) github 存储库?