ftp_ssl_connect 和 ftp_nlist

问题描述 投票:0回答:0

我需要连接到远程系统来获取一些文件。远程系统的规格提到:

需要的协议是SFTP——SSH文件传输协议 端口号是 22

首先,我使用我的 FTP 客户端应用程序尝试使用给定的凭据登录到新服务器。

起初我(按照系统的规格)使用 SFTP over SSH 连接类型并且确实工作正常。

我研究了如何在 PHP 中使用 SFTP over SSH 访问远程资源,我得到了 ssh2 命令集......但是我的服务器没有安装 ssh2 命令,我也不熟悉如何进一步处理它在列出和下载远程文件等方面(我习惯于简单的

ftp_connect()
ftp_login()
ftp_nlist()
命令)...

所以我在我的 FTP 客户端应用程序中尝试了其他选项,发现尽管有新系统的规格,它也可以使用 FTP 使用显式 SSL(Auth SSL)FTP 使用显式 SSL(Auth TLS) 连接类型连接良好(唯一的区别是,在那些情况下,我会弹出一个窗口,要求我接受并存储远程证书。当然,我也有一个远程文件列表......

所以,我研究了在 PHP 中使用显式 SSL 的 FTP 连接的实现,并得到了

ftp_ssl_connect()
命令,它可以直接替代
ftp_connect()
。所以我认为我的代码中的任何其他内容都可以保持不变......但令我失望的是我无法使用
ftp_nlist()
命令获取远程文件列表(我得到的是布尔值 false)。

所以让我给你我使用的命令列表,以及控制台中显示的结果:

$conn = ftp_ssl_connect( $ftp_address );
$login = ftp_login( $conn, $ftp_username, $ftp_password );
$files = ftp_nlist( $conn, '.' );

var_dump( $conn );
var_dump( $login );
var_dump( $files );

返回

resource(4250) of type (FTP Buffer)
bool(true)
bool(false)

我之前也尝试过使用被动模式

ftp_nlist()
,像这样:

$conn = ftp_ssl_connect( $ftp_address );
$login = ftp_login( $conn, $ftp_username, $ftp_password );
ftp_pasv( $conn, true );
$files = ftp_nlist( $conn, '.' );

var_dump( $conn );
var_dump( $login );
var_dump( $files );

返回一个

PHP Warning:  ftp_nlist(): php_connect_nonb() failed: Permission denied (13) in

有人能告诉我为什么

ftp_nlist()
在连接本身成功时失败,并给我一个如何处理这个问题的建议吗? TIA!

php ftp ssl-certificate ssh2-sftp
© www.soinside.com 2019 - 2024. All rights reserved.