首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ftp_nlist():data_accept: SSL/TLS握手失败

ftp_nlist():data_accept: SSL/TLS握手失败
EN

Stack Overflow用户
提问于 2017-12-04 14:09:51
回答 2查看 2.2K关注 0票数 1

很久以前,PHP land中有一个正常的错误:

警告: ftp_nlist():data_accept: SSL/TLS握手在第29行的路径中失败

但是这里有一个问题,“第29行”不是连接或登录,注意它是如何引用ftp_nlist()函数的:

代码语言:javascript
复制
$ftp = ftp_ssl_connect($cred['host'], $cred['port'], 180);
if (!ftp_login($ftp, $cred['user'], $cred['pass'])) {die("Login Failed");}
ftp_pasv($ftp, true);

$files = ftp_nlist($ftp, '');

OpenSSL是在phpinfo()中编译和启用的,如下所示:登录():SSL/TLS握手失败

其他我见过的帖子似乎都引用了对我有用的ftp_ssl_connect()ftp_login()命令中的错误。当ftp_login()返回true时,我可以检查什么?

或者..。是否有任何日志可以获得更多关于什么问题的详细信息?

我使用的是php 5.3.29。代码在我的桌面(php 7)上确实正常工作,但我希望我不必将服务器升级到7才能工作

12-28-2017更新:升级到5.6解决了,所以看起来马丁已经达到目的了.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-04 14:50:45

ftp_nlist打开一个数据连接。该连接也需要TLS/SSL握手。

随着控制连接握手成功,PHP中缺少的TLS/SSL支持确实无法解决问题。这两个问题都不可能是因为服务器和PHP无法找到一个可以达成一致的密码。

当在控制连接上的握手成功后,当数据连接上的TLS/SSL握手失败时,这通常是因为客户端(PHP)没有从数据连接上的控制连接重用TLS/SSL会话(参见为什么会话重用在FTPS中很有用?)。有些服务器确实需要这样做。PHP只支持自5.6.26以来的重用。见PHP 70195。所以,至少要确保使用该版本的PHP。

票数 1
EN

Stack Overflow用户

发布于 2020-09-26 08:37:58

虽然这个问题已经很老了,但万一别人碰到了这个问题:

如果您的ftp_ssl_connectftp_login运行良好,但是ftp_nlistftp_putftp_fput等功能无法工作,那么问题可能是您的FTP服务器使用端口21进行连接,但是使用不同的端口范围进行数据传输,这就解释了为什么您可以连接和登录,但不能上传或下载数据,并且需要允许连接到防火墙中的端口范围。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47635241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档