首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP如何在TLS上使用隐式FTP连接FTP

PHP如何在TLS上使用隐式FTP连接FTP
EN

Stack Overflow用户
提问于 2017-08-03 03:59:50
回答 1查看 1.3K关注 0票数 0

显然,FTP的本地FTP功能不支持TLS上的隐式FTP

我用Curl试过了,但不起作用:

代码语言:javascript
复制
$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访问。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-03 04:23:58

您的URL应该包括该方案,例如:

代码语言:javascript
复制
$ftp_server = 'ftps://data.example.com/file.csv'; 

来自URL解释

如果给定的URL缺少一个方案名(如"http://“或"ftp://”等),那么libcurl将根据主机进行猜测。如果最外层的子域名与DICT、FTP、IMAP、LDAP、POP3或SMTP匹配,那么将使用该协议,否则将使用HTTP。

您正在访问IIS欢迎页面和404错误,因为您正在发出http请求,而不是通过ftp进行连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45474543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档