通过 TLS 的显式 FTP 失败:警告:ftp_fput(): data_accept: SSL/TLS 握手失败

Explicit FTP over TLS fails : Warning: ftp_fput(): data_accept: SSL/TLS handshake failed

我正在尝试连接到 FTP 服务器,该服务器需要通过 TLS 显式 FTP,所有 FTP 客户端都可以正常工作,但我无法在其中工作PHP:

<?php
$ftp = ftp_ssl_connect($host, 21);
$login = ftp_login($ftp, $user, $pass);
ftp_pasv($ftp, true);

$fp = fopen('php://temp', 'r+');
fwrite($fp, 'Salam');
rewind($fp);
ftp_fput($ftp, '/file.txt', $fp);

服务器配置正确,使用 filezilla、lftp、ftptest.net

等客户端没有问题

PHP版本:7.4.3

OpenSSL:OpenSSL 1.1.1f 2020 年 3 月 31 日

经过几天的尝试,我发现 FTP 服务器正在使用端口 21 但数据传输的端口范围不同,这解释了为什么连接和登录有效,但是列表和 upload/download 没有。并且这些端口在防火墙中被阻止。

我要求托管服务提供商允许在这些端口上进行传出连接,问题已解决。