奇怪的PHP的FTP包装器行为

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

在远程FTP文件上使用fopen导致

无法打开流:无法设置数据通道:连接被拒绝

我看到的是使用Wireshark将网络流量过滤到FTP的FTP

Response: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Request: USER user
Response: 331 User user OK. Password required
Request: PASS password
Response: 230 OK. Current restricted directory is /
Request: TYPE I
Response: 200 TYPE is now 8-bit binary
Request: SIZE filename
Response: 213 28344
Request: EPSV
Response: 229 Extended Passive mode OK (|||25127|)
Request: RETR filename

以下是一些DNS查询,然后是这些TCP帧:

60662 → 25127 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=475196536 TSecr=0 WS=128
25127 → 60662 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
45764 → 21 [FIN, ACK] Seq=102 Ack=493 Win=64128 Len=0 TSval=475196552 TSecr=2527041209

没有使用包装器我得到

Response: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Request: USER user
Response: 331 User user OK. Password required
Request: PASS password
Response: 230 OK. Current restricted directory is /
Request: PASV
Response: 227 Entering Passive Mode (89,31,148,62,184,87)
Request: TYPE A
Response: 200 TYPE is now ASCII
Request: RETR filename
Response: 150-Accepted data connection
Response: 226-File successfully transferred
Response: 226 Logout.

然后看起来像EPSV的问题?

php ftp stream
1个回答
1
投票

所以我想我的问题与https://bugs.php.net/bug.php?id=69580相同

PHP的FTP包装器使用EPSV,而ftp_pasv使用具有IPv4的PASV。我尝试从中下载的服务器出现EPSV问题,并且包装程序不会回退到PASV,因此出现错误。

一个人可以要求服务器的管理员修复其设置,但在我的情况下,这意味着我将无法使用包装器。

© www.soinside.com 2019 - 2024. All rights reserved.