phpseclib连接过早关闭
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpseclib连接过早关闭相关的知识,希望对你有一定的参考价值。
我正在尝试使用phpseclib连接SFTP服务器,但是我收到以下错误
“注意:连接在第3396行的 phpseclib Net SSH2.php中提前关闭”并且永远不会获得成功消息。
登录详细信息在FileZilla上运行正常。
以下是我的代码
use phpseclibCryptRSA;
use phpseclibNetSSH2;
define('NET_SSH2_LOGGING', SSH2::LOG_COMPLEX);
$key = new RSA();
$key->setPassword('ppk file password');
$key->loadKey(file_get_contents('ppk file path'));
$ssh2 = new SSH2('domain:port');
if (!$ssh2->login('sftp user', $key)) {
$log = $ssh2->getLog();
echo $log;
exit('Login Failed');
}else{
exit('Success');
}
任何帮助,为什么我收到错误非常感谢。
答案
我不得不回到phpseclib 2.0.2找到一个版本的phpseclib(2.0分支),它在第3396行有一个带有“连接过早关闭”的user_error
:
https://github.com/phpseclib/phpseclib/blob/2.0.2/phpseclib/Net/SSH2.php#L3396
最新版本的phpseclib是2.0.9。我试着升级。
2.0.2于2016年6月4日发布.2.0.9于2017年11月29日发布。当时发生了很多变化。
另一答案
在这种情况下,SSH日志可能会更有帮助。
你可以通过做define('NET_SSH2_LOGGING', 2)
然后做$ssh->getLog()
来获得它们。
那么你应该看看最后几个包
你能定义什么是你的php版本以及服务器上的操作系统是什么?
以上是关于phpseclib连接过早关闭的主要内容,如果未能解决你的问题,请参考以下文章
Bash Expect Telnet:处理服务器关闭的过早连接
为啥我们的 Spring/Hibernate/JDBC/Websphere 系统中的连接过早关闭?
Nginx上游过早关闭连接,同时从上游读取响应标头,用于大型请求