我必须使用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();
但是我有这样的警告,$files
是false
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
我该怎么做?
3条答案
按热度按时间qvtsj1bj1#
这周我也遇到了同样的问题。
我能够通过枚举
ftp_login
失败后获得的OpenSSL错误来诊断此问题:它给出了以下输出:
错误:141A318A:SSL例程:tls_process_ske_dhe:dh密钥太小
错误:140E0197:SSL例程:SSL_shutdown:在init中关闭
这个输出让我明白我的FTP服务器配置(在我的例子中是
vsftpd
)使用的是一个低安全性的密码。修复方法是进入服务器上的
/etc/vsftpd/vsftpd.conf
文件,并将ssl_ciphers=HIGH
添加到配置中。希望这种见解将来对某人有用。
vlf7wbxs2#
我认为你的问题在于OpenSSL不是用PHP编译的。你可以在这里找到更多信息:http://www.deciacco.com/blog/php/php-openssl-and-ftp_ssl_connect-on-win32
关于如何修复它的信息。你可以检查你的PHP是否通过
phpinfo
编译了OpenSSL。考虑到你正在运行Windows服务器,请检查上面的链接。由于你没有提供这些信息,这只是一个随机猜测。lvjbypge3#
我可以用这个复制我的文件: