Странное поведение PHP-оболочки FTP - PullRequest
0 голосов
/ 06 апреля 2020

Использование fopen в удаленном файле FTP приводит к

не удалось открыть поток: не удалось настроить канал данных: соединение отказано

Фильтрация сетевого трафика c на FTP с Wireshark Я вижу

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 тогда?

1 Ответ

1 голос
/ 08 апреля 2020

Оооооо, я думаю, моя проблема такая же, как https://bugs.php.net/bug.php?id=69580

Оболочка PHP в PHP использует EPSV, а ftp_pasv использует PASV с IPv4. У сервера, с которого я пытаюсь загрузить, есть проблема с EPSV, и оболочка не будет использовать PASV, поэтому возникает ошибка.

Можно попросить администратора сервера исправить их настройки, но в моем случае это означает, что я не сможет использовать оболочку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...