PHP如何通过TLS使用隐式FTP连接到FTP

PHP如何通过TLS使用隐式FTP连接到FTP,php,curl,ftp,Php,Curl,Ftp,显然,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,

显然,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访问


谢谢

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

$ftp_server = 'ftps://data.example.com/file.csv'; 
发件人:

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


您正在点击IIS欢迎页面,并出现404错误,因为您正在发出http请求,而不是通过ftps进行连接。

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

$ftp_server = 'ftps://data.example.com/file.csv'; 
发件人:

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


您正在点击IIS欢迎页面并出现404错误,因为您正在发出http请求,而不是通过ftps进行连接。

ftps://
data.example.com/file.csv
完美!足够简单。
ftps://
data.example.com/file.csv
完美!很简单,谢谢。汉森里克也给出了同样的答案。我会给他积分,但他没有提供答案。@user2029890^^很好,只需将此标记为已接受即可。不过谢谢你这么体贴。(顺便说一句,我建议不要让curl猜测,作为一般规则,是明确的,以避免意外)谢谢。汉森里克也给出了同样的答案。我会给他积分,但他没有提供答案。@user2029890^^很好,只需将此标记为已接受即可。不过谢谢你这么体贴。(顺便说一句,我建议不要让curl猜测,作为一般规则,是明确的,这样可以避免意外)