2014-06-20 238 views
0

我目前正在研究一個涉及連接到客戶FTPS服務器並下載他們正在使用我們需要的數據自動更新的文件的項目。我想通過PHP訪問這個服務器,所以我可以自動化它。通過PHP連接到FTPS

我的問題是FTP_SSL_CONNECT不起作用,因爲客戶端在服務器上使用隱式TLS安全。

有沒有人有任何獲得此連接工作的經驗?

感謝, 牛逼

$username = 'username here'; 
$password = 'password here'; 
$get_file = "file to get here"; 
//set ftps url 
$url = "ftps urls here"; 
$local_prefix = 'local folder prefix here'; 
$location = "ftps://" . $username . ":" . $password . "@" . $url; 
$port = "any port number here"; 
//********************************************************************// 
//initialize cURL and begin 
print("Initializing cURl and saving file from scure ftp."); 
$curl = curl_init(); 
//create or open a file for writing 
$file = fopen("$local_prefix$get_file", "w"); 
//set cURL options *note* these must occur in order for implicit ftp to work correctly 
curl_setopt($curl, CURLOPT_URL, "$location$get_file"); 
curl_setopt($curl, CURLOPT_PORT, "$port"); 
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($curl, CURLOPT_FILE, $file); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($curl, CURLOPT_FTP_SSL, CURLFTPSSL_TRY); 
curl_exec($curl) or die("did not save file"); 
curl_close ($curl); 
fclose($file); 
+1

向我們展示你想什麼...你嘗試使用通過'shell命令exec',流,套接字,'file_get_contents'(甚至可以使用FTP嗎?),還是其他? – Kryten

+0

我討厭鏈接出來,但:: :: https://gist.github.com/maxrice/4544344 – VikingBlooded

+0

我在網上發現了這個代碼(從來不是一個好主意,我知道),但我需要適應它以某種方式爲我工作,我試圖讓我的PHP代碼訪問FTPS服務器,下載更新的文本文件,然後允許它被使用。我只是不斷得到超時(大概是因爲無法連接更多的東西) – TeeJayEss

回答

0

您需要添加這些選項捲曲打電話

CURLOPT_FTP_SSL  => CURLFTPSSL_ALL, // require SSL For both control and data  connections 
CURLOPT_FTPSSLAUTH  => CURLFTPAUTH_DEFAULT, // let cURL choose the FTP authentication method (either SSL or TLS)