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

时间:2020-09-23 13:32:14

标签: php ssl ftp openssl

我正在尝试连接到需要通过TLS进行显式FTP的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日

1 个答案:

答案 0 :(得分:0)

经过几天的尝试,我发现FTP服务器正在使用端口21,但是用于数据传输的端口范围不同,这说明了为什么连接和登录有效,但是列出和上传/下载却不起作用没错这些端口被防火墙屏蔽了。

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