我正在尝试连接到需要通过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日
答案 0 :(得分:0)
经过几天的尝试,我发现FTP服务器正在使用端口21
,但是用于数据传输的端口范围不同,这说明了为什么连接和登录有效,但是列出和上传/下载却不起作用没错这些端口被防火墙屏蔽了。
我要求托管服务提供商允许这些端口上的传出连接,问题已解决。