phpseclib总是产生登录失败


phpseclib always produces login failed

我不确定这是我做错了什么,还是服务器不支持phpseclib或其他什么,但我正在尝试连接到一个只接受安全FTP连接的FTP服务器,并且只接受来自特定IP地址的连接。现在我知道FTP服务器接受来自VPS服务器的连接,因为我已经通过SSH远程连接到VPS,并成功地从命令行手动连接到FTP服务器。

然而,当我用phpseclib尝试以下操作时,它总是到达出口点。

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include 'Net/SFTP.php';
$sftp = new NET_SFTP('***');
if(!$sftp->login('***', '***')) {
    $sftp->getSFTPErrors();
    exit('Login Failed'); // <-- Code always gets to this point
}
echo $sftp->pwd();

我甚至不确定如何开始调试这个问题。我也在他们的论坛上问了一个问题,试图寻求帮助。我曾尝试使用define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);启用日志记录,然后在出口上方输出echo $sftp->getSFTPLog();,但这不会输出任何内容。

在页面上,我只有Login Failed,所以$sftp->getSFTPErrors();没有任何错误。

我对在PHP中使用安全FTP连接完全陌生,不知道自己做错了什么。有人能帮我调试这个问题吗?

使用它的方式很明显,您没有看到任何错误。$sftp->getLastSFTPError()返回一个字符串,$sftp->getSFTPErrors()返回一个数组,这就是您必须回显的内容,以便查看问题所在。

尝试

print_r($sftp->getSFTPErrors());