通过PHP连接到FTPS

时间:2014-06-20 14:56:28

标签: php ftps

我目前正在开发一个项目,该项目涉及连接到客户端FTPS服务器并使用我们需要的数据下载他们正在自动更新的文件。我想通过PHP访问这个服务器,所以我可以自动化它。

我遇到的问题是,由于客户端在服务器上使用隐式TLS安全性,FTP_SSL_CONNECT将无法正常工作。

有没有人有使这种连接有效的经验?

谢谢, Ť

$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 个答案:

答案 0 :(得分:0)

您需要将这些选项添加到curl call

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)