很久以前,PHP land中有一个正常的错误:
警告: ftp_nlist():data_accept: SSL/TLS握手在第29行的路径中失败
但是这里有一个问题,“第29行”不是连接或登录,注意它是如何引用ftp_nlist()函数的:
$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解决了,所以看起来马丁已经达到目的了.
发布于 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。
发布于 2020-09-26 08:37:58
虽然这个问题已经很老了,但万一别人碰到了这个问题:
如果您的ftp_ssl_connect和ftp_login运行良好,但是ftp_nlist、ftp_put、ftp_fput等功能无法工作,那么问题可能是您的FTP服务器使用端口21进行连接,但是使用不同的端口范围进行数据传输,这就解释了为什么您可以连接和登录,但不能上传或下载数据,并且需要允许连接到防火墙中的端口范围。
https://stackoverflow.com/questions/47635241
复制相似问题