2017-01-22 62 views
1

我忙於一個需要連接到FTPS服務器的curl php庫。FTPS CURL PHP

我有這半工作...如果我連接到ftp://domain.com然後它的工作。如果我使用tcpflow觀察服務器上的通信,我會看到它使用AUTH TLS登錄,並且所有通信都被加密。該文件上傳,所有的好..

我不確定的是,如果它有效嘗試連接,而不是ftps://domain.com?

我問的原因是因爲如果我從FTP協議更改爲FTPS在捲曲,則登錄失敗,服務器(看tcpflow通訊)說,登錄失敗:

191.101.002.204.00021-088.099.012.154.51630: 530 Please login with USER and PASS. 

而且,當我試圖連接到ftps時看到通信://我沒有看到客戶端發出AUTH TLS命令,因爲它使用普通的ftp://

我遇到的問題是,似乎我的客戶端的FTP服務器,我們必須最終連接到似乎不允許沒有ftps://協議的連接。

如果我連接使用的lftp我可以這樣做使用FTPS://但我必須禁用SSL: 設置ftp://ssl-allow沒有

如果我使用FTP嘗試的lftp連接://它只是掛在登錄命令

我不是真的是經歷了FTP或TLS/SSL,所以我不知道它也許是因爲客戶端的服務器沒有證書設置正確..

這是我的一部分curl代碼,它與ftp://一起工作,但不是ftps://

// Works 
$url = "ftp://proxy.plettretreat.co.za/"; 
// Does not work 
$url = "ftps://proxy.plettretreat.co.za/"; 
$port = 990; 
$username = "ftpuser"; 
$password = "pass"; 

$filename = "/test.php"; 
$file = dirname(__FILE__)."/test.php"; 

$c = curl_init(); 

// check for successful connection 
if (! $c) 
     throw new Exception('Could not initialize cURL.'); 

$options = array(
     CURLOPT_USERPWD  => $username.':'.$password, 
     CURLOPT_SSL_VERIFYPEER =>  0, 
     CURLOPT_SSL_VERIFYHOST =>  0, 
     CURLOPT_RETURNTRANSFER =>  1, 
     CURLOPT_BINARYTRANSFER =>  1,   
     CURLOPT_FTP_SSL  => CURLFTPSSL_ALL, // require SSL For both control and data connections 
     CURLOPT_FTPSSLAUTH  => CURLFTPAUTH_TLS, // let cURL choose the FTP authentication method (either SSL or TLS) 
     CURLOPT_UPLOAD   => true, 
     CURLOPT_PORT   => $port, 
     CURLOPT_TIMEOUT  => 30, 
); 

我不確定的另一件事是我的客戶端給了我一個IP地址來連接..可以在ftps中使用IP地址嗎?我會認爲證書主要是證明一個域名?

TL;博士

1)我可以使用FTPS://domain.com使用curl PHP連接? 2)如果我可以在curl中使用ftps://,那麼我如何得到curl來登錄(發出auth tls命令)? 3)FTP服務器只能使用IP地址使用SSL/TLS嗎?

謝謝...

約翰

回答