2015-09-03 198 views
1

我試圖使用加密作爲顯式FTP通過TLS連接到FTP服務器。CURL - 通過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。

+1

有你有現成的FTP程序試圖用相同的屬性來訪問服務器在你的代碼? – hoijui

+0

'curl_error'返回什麼? –

+0

它返回消息「響應閱讀失敗」。 – SandyK

回答

2

不僅你沒有啓用TLS/SSL。你甚至沒有指定要使用的協議。 CURL默認爲HTTP。因此,您的代碼失敗,因爲CURL試圖與HTTP服務器通話。

要選擇FTP和強制TLS/SSL:

curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_FTP); 
curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_ALL); 
-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); 
+0

建議不要驗證TLS/SSL證書是一種不好的做法。特別是沒有任何解釋。 –