2012-06-06 54 views
2

我已經做好了所有可能的連接來驗證FTP服務器是否正常工作,甚至可以使用file_put_contents()來上傳文件,但是PHP的FTP函數在嘗試時並不適用於我一個SSL連接。服務器被配置爲不允許非SSL的連接,因此不存在回退。沒關係,一切仍然有效,但我真的想使用ftp_ssl_connect()和ftp_login()來工作!嘗試SSL連接時PHP的FTP功能

見這個例子:

<?php 

$username = 'someuser'; 
$password = 'SeCrEtPassWd'; 
$hostname = '192.168.1.10'; 
$filename  = 'whatever.txt'; 
$string_data = 'This is the text content of the file. Pretty fancy eh?'; 


// USE file_put_contents W/ stream_context_create - WORKS !!!! 
$url = 'ftps://' . $username . ':' . $password . '@' . $hostname . '/'; 
$opts = array('ftp' => array('overwrite' => true)); 
$context = stream_context_create($opts); 
file_put_contents($url . $filename, $string_data, 0, $context); 

// END的代碼工作--------------------------- --------

// USE PHP's FTP functions - DOES NOT WORK !!! 
$conn_id = @ftp_ssl_connect($hostname); 
$login_result = ftp_login($conn_id, $username, $password); 
ftp_put($conn_id, $filename, $filename, FTP_ASCII); 
ftp_close($conn_id); 

// END的代碼不工作------------------------ ---

/* 
****ERRORS PERTAINING TO THE PROBLEM ----------------------------**** 

Warning: ftp_login() [function.ftp-login]: SSL/TLS handshake failed in C:\xampp\htdocs\script-library\ftps.php on line 20 
Warning: ftp_login() [function.ftp-login]: Proceed with negotiation. in C:\xampp\htdocs\script-library\ftps.php on line 20 
*/ 

這是PHP中的錯誤嗎?我只是不明白爲什麼一切正常,但不是PHP的FTP功能。我的問題是,我真的需要能夠列出遠程服務器上的文件,因爲我不想覆蓋它們。我想將文件重命名爲不存在的文件。

回答

0

我需要:

ftp_pasv($conn_id, true); 

登錄後,使我的工作。