CURL - 通过TLS连接显式FTP

时间:2015-09-03 07:29:18

标签: php ssl curl ftp

我正在尝试使用加密作为显式FTP over TLS连接到FTP服务器。

curl_setopt($ch, CURLOPT_URL, 'ftp.mydomain.com/orders'.$filename);
curl_setopt($ch, CURLOPT_USERPWD, 'uname:pwd');
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_PORT, 21);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);

我必须将文件上传到此位置,但在连接到服务器时,它会给出错误号56(响应读取失败)。 我不确定我是否使用正确的选项通过TLS显式连接FTP。

2 个答案:

答案 0 :(得分:2)

您不仅没有启用TLS / SSL。您甚至没有指定要使用的协议。而CURL默认为HTTP。因此,您的代码失败,因为CURL尝试将HTTP与FTP服务器进行通信。

选择FTP并强制使用TLS / SSL:

curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_FTP);
curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_ALL);

答案 1 :(得分:-1)

尝试使用以下代码 -

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);