PHP 5.6.0 released

ftp_ssl_connect

(PHP 4 >= 4.3.0, PHP 5)

ftp_ssl_connect打开 SSL-FTP 连接

说明

resource ftp_ssl_connect ( string $host [, int $port = 21 [, int $timeout = 90 ]] )

ftp_ssl_connect() 打开一个到 host 的安全 FTP 连接(SSL-FTP)。

Note: 为何本函数有可能不存在?

只有 PHP 构建时同时包含了 ftp 模块 和 OpenSSL 模块时, ftp_ssl_connect() 函数才可用。 也就是说,在 Windows 平台上,官方发布的 PHP 构建中本函数不可用。 如果需要在 Windows 平台使用本函数,需要自行编译 PHP。

Note:

ftp_ssl_connect() 不是用来连接 sFTP 服务的。 要在 PHP 中使用 sFTP,请参见 ssh2_sftp()

参数

host

FTP 服务器地址。 此参数末尾不可以有斜线,开头也不可以有 ftp://

port

要连接的端口。如果省略此参数或设置为 0,将使用 FTP 默认端口 21。

timeout

此参数设置所有后续网络操作的超时时长。 如果省略,默认值为 90 秒。 可以使用 ftp_set_option()ftp_get_option() 函数随时读取或设置超时时长。

返回值

操作成功返回 SSL-FTP 流,操作失败返回 FALSE

更新日志

版本 说明
5.2.2 以前版本中,如果无法使用 SSL 连接,将会返回一个非 SSL 的连接, 在 5.2.2 版本中修改为返回 FALSE

范例

Example #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);
?>

参见

add a note add a note

User Contributed Notes 1 note

up
3
mmm3567 at gmail dot com
2 years ago
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.
To Top