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

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

У меня проблема в том, что 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);

person TeeJayEss    schedule 20.06.2014    source источник
comment
Покажите нам, что вы пытаетесь... вы пытаетесь использовать команду оболочки через exec, потоки, сокеты, file_get_contents (это вообще работает с FTP?) или что-то еще?   -  person Kryten    schedule 20.06.2014
comment
Я ненавижу ссылаться из SO, но:: gist.github.com/maxrice/4544344   -  person VikingBlooded    schedule 20.06.2014
comment
Я нашел этот код в Интернете (знаю, это никогда не было хорошей идеей), но мне нужно как-то адаптировать его, чтобы он работал на меня, я пытаюсь получить свой PHP-код для доступа к FTPS-серверу, загрузить обновленный текстовый файл, а затем разрешить его быть использованным. Я просто продолжаю получать тайм-ауты (предположительно из-за того, что не могу больше подключиться)   -  person TeeJayEss    schedule 20.06.2014
comment
Вставляйте код в вопрос, а не в комментарии. И используйте форматирование кода.   -  person Patrick Q    schedule 20.06.2014
comment
видите, я посмотрел на этот @VikingBlooded, но потом не смог заставить его работать на меня   -  person TeeJayEss    schedule 20.06.2014
comment
curl_exec($curl) or die(curl_error($curl)) даст вам гораздо лучшую диагностику, чем довольно бесполезная строка не работает.   -  person Marc B    schedule 20.06.2014
comment
используя ссылку, которую я вам показал, потребовалось всего 2 минуты, чтобы создать, перенести на веб-сервер и протестировать. Он работал просто отлично, подключившись к моему.   -  person VikingBlooded    schedule 20.06.2014
comment
Я ввел в него все свои правильные данные, и время ожидания все равно истекло.   -  person TeeJayEss    schedule 20.06.2014


Ответы (1)


Вам нужно добавить эту опцию для завивки вызова

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)
person Sean Keane    schedule 20.06.2014