ftp_ssl_connect
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
ftp_ssl_connect — Устанавливает соединение с FTP-сервером через SSL
Описание
$host
[, int $port
= 21
[, int $timeout
= 90
]] )
ftp_ssl_connect() устанавливает SSL соединение с
FTP-сервером, заданным аргументом host
.
Замечание: Почему эта функция может быть не определена
Функция ftp_ssl_connect() доступна только в том случае, если PHP был собран с поддержкой OpenSSL. Это означает что под Windows эта функция не будет определена в официальном дистрибутиве. Чтобы использовать эту функцию под Windows, вам придется собрать PHP самостоятельно для включения поддержки OpenSSL.
Замечание:
ftp_ssl_connect() не предназначена для использования по протоколу sFTP. Для использования sFTP из PHP смотрите функцию ssh2_sftp().
Список параметров
-
host
-
Адрес FTP-сервера. Этот параметр не должен содержать слеши в конце и префикс ftp:// в начале.
-
port
-
Задает порт, на котором устанавливается соединение. Если равен нулю или опущен, по умолчанию используется стандартный для протокола FTP порт 21.
-
timeout
-
Задает таймаут для всех операций с этим соединением. По умолчанию таймаут устанавливается в 90 секунд. Получить и установить значение таймаута можно также с помощью функций ftp_set_option() и ftp_get_option().
Возвращаемые значения
Возвращает SSL-FTP поток в случае успеха, или FALSE
при возникновении
ошибки.
Список изменений
Версия | Описание |
---|---|
5.2.2 |
Эта функция теперь возвращает FALSE , если не удалось установить
SSL-соединение, вместо прежнего поведения, когда
устанавливалось обычное, не-SSL соединение.
|
Примеры
Пример #1 Пример использования функции ftp_ssl_connect()
<?php
// установка ssl-соединения
$conn_id = ftp_ssl_connect($ftp_server);
// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo ftp_pwd($conn_id); // /
// закрытие ssl-соединения
ftp_close($conn_id);
?>
- ftp_alloc
- ftp_cdup
- ftp_chdir
- ftp_chmod
- ftp_close
- ftp_connect
- ftp_delete
- ftp_exec
- ftp_fget
- ftp_fput
- ftp_get_option
- ftp_get
- ftp_login
- ftp_mdtm
- ftp_mkdir
- ftp_nb_continue
- ftp_nb_fget
- ftp_nb_fput
- ftp_nb_get
- ftp_nb_put
- ftp_nlist
- ftp_pasv
- ftp_put
- ftp_pwd
- ftp_quit
- ftp_raw
- ftp_rawlist
- ftp_rename
- ftp_rmdir
- ftp_set_option
- ftp_site
- ftp_size
- ftp_ssl_connect
- ftp_systype
Коментарии
Something that isn't mentioned above is that although ftp_ssl_connect may be available and will return an FTP stream it may not be usable. Take the following code (FTP login credentials are obviously set elsewhere):
<?php
var_dump(function_exists('ftp_ssl_connect'));
if(function_exists('ftp_ssl_connect'))
{
$ftp_connection = @ftp_ssl_connect($this->ftp_host);
}
else
{
$ftp_connection = @ftp_connect($this->ftp_host);
}
var_dump($ftp_connection);
if($ftp_connection)
{
ftp_login($ftp_connection, $this->ftp_user, $this->ftp_password);
}
// output: bool(true) resource(71) of type (FTP Buffer)
?>
From this you'd assume everything would work, ftp_ssl_connect is available and you have a connection. However, once you get to ftp_login, you could get this:
Warning [2] ftp_login() [function.ftp-login]: AUTH not understood
This is because the server is not configured to understand the encrypted details, even though the function is available and an SSL-FTP stream was opened.
If you are trying to use ftp_ssl_connect make sure you check if you can login after using it, and if not, connect again with standard ftp_connect.
Hope this is of use.