php ftp_login():SSL/TLS握手失败

sz81bmfz  于 2023-03-21  发布在  PHP
关注(0)|答案(3)|浏览(172)

我必须使用FTPS检索文件:

$ftp = ftp_ssl_connect($ftp_server, 9921, 10);

$bool = ftp_login($ftp, $login, $pass);

ftp_pasv($ftp, true);

$files = ftp_nlist($ftp, "/");

var_dump($files);
die();

但是我有这样的警告,$filesfalse

Warning: ftp_login() [function.ftp-login]: SSL/TLS handshake failed in xxx\view.importfromadmin.php on line 81

Warning: ftp_login() [function.ftp-login]: Using authentication type TLS in xxx\view.importfromadmin.php on line 81

我该怎么做?

qvtsj1bj

qvtsj1bj1#

这周我也遇到了同样的问题。
我能够通过枚举ftp_login失败后获得的OpenSSL错误来诊断此问题:

$err = openssl_error_string();
while ($err)
{
    echo($err . "\n");
    $err = openssl_error_string();
}

它给出了以下输出:
错误:141A318A:SSL例程:tls_process_ske_dhe:dh密钥太小
错误:140E0197:SSL例程:SSL_shutdown:在init中关闭
这个输出让我明白我的FTP服务器配置(在我的例子中是vsftpd)使用的是一个低安全性的密码。
修复方法是进入服务器上的/etc/vsftpd/vsftpd.conf文件,并将ssl_ciphers=HIGH添加到配置中。
希望这种见解将来对某人有用。

vlf7wbxs

vlf7wbxs2#

我认为你的问题在于OpenSSL不是用PHP编译的。你可以在这里找到更多信息:http://www.deciacco.com/blog/php/php-openssl-and-ftp_ssl_connect-on-win32
关于如何修复它的信息。你可以检查你的PHP是否通过phpinfo编译了OpenSSL。考虑到你正在运行Windows服务器,请检查上面的链接。由于你没有提供这些信息,这只是一个随机猜测。

lvjbypge

lvjbypge3#

我可以用这个复制我的文件:

$ftp_path = "ftps://$ftp_login:$ftp_password@$ftp_server:9921/".$import_file;

copy($ftp_path, $uploadFileName);

相关问题