显然,FTP的本地FTP功能不支持TLS上的隐式FTP
我用Curl试过了,但不起作用:
$ftp_server = 'data.example.com/file.csv';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ftp_server);
curl_setopt($ch, CURLOPT_USERPWD,'abcde'.':'.'123456');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_TRY);
curl_setopt($ch, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_TLS);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$file = fopen('local_file.csv', "w+");
curl_setopt($ch, CURLOPT_FILE, $file);
$data = curl_exec($ch);
$error_no = curl_errno($ch);
curl_close($ch);如果我尝试在URL中没有文件名,当我得到IIS欢迎页面时,我似乎会到达服务器。如果我尝试处理该文件,就会得到404错误。我知道文件是准确的,因为我可以通过Filezilla访问。
谢谢
发布于 2017-08-03 04:23:58
您的URL应该包括该方案,例如:
$ftp_server = 'ftps://data.example.com/file.csv'; 来自URL解释
如果给定的URL缺少一个方案名(如"http://“或"ftp://”等),那么libcurl将根据主机进行猜测。如果最外层的子域名与DICT、FTP、IMAP、LDAP、POP3或SMTP匹配,那么将使用该协议,否则将使用HTTP。
您正在访问IIS欢迎页面和404错误,因为您正在发出http请求,而不是通过ftp进行连接。
https://stackoverflow.com/questions/45474543
复制相似问题