Подключение к FTPS через PHP

#php #ftps

#php #ftps

Вопрос:

В настоящее время я работаю над проектом, который включает в себя подключение к серверу FTPS клиентов и загрузку файла, который они автоматически обновляют с помощью требуемых нам данных. Я хочу получить доступ к этому серверу через PHP, чтобы я мог его автоматизировать.

Проблема, с которой я сталкиваюсь, заключается в том, что FTP_SSL_CONNECT НЕ будет работать из-за того, что клиент использует неявную защиту TLS на сервере.

Есть ли у кого-нибудь опыт работы с этим подключением?

Спасибо, T

 $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. Покажите нам, что вы пытаетесь… вы пытаетесь использовать команду оболочки через exec , потоки, сокеты file_get_contents (это вообще работает с FTP?) Или что-то еще?

2. Я ненавижу ссылаться на SO, но :: gist.github.com/maxrice/4544344

3. Я нашел этот код в Интернете (я знаю, это не очень хорошая идея), но мне нужно как-то адаптировать его, чтобы он работал на меня, я пытаюсь заставить свой PHP-код получить доступ к серверу FTPS, загрузить обновленный текстовый файл и затем разрешить его использование. Я просто продолжаю получать тайм-ауты (предположительно, из-за невозможности подключиться больше всего)

4. Поместите код в вопрос, а не в комментарии. И используйте форматирование кода.

5. видите, я посмотрел на это @VikingBlooded, но потом не смог заставить его работать на меня

Ответ №1:

Вам нужно добавить эти опции в вызов curl

 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)