Я могу подключиться к FTP-серверу с помощью PHP, но не могу ftp_nlist даже в пассивном режиме - PullRequest
0 голосов
/ 22 мая 2018

У меня проблема.Я могу подключиться к FTP-серверу, но не могу использовать ftp_nlist.Страница белая и загружается бесконечно.

Вот мой код:

$ftpStream = ftp_connect($host,$port);

if($ftpStream!=false)
{
    echo 'FTP Connected </br>';
    echo 'Hostname = ' . $host . '</br>';
    $login=ftp_login($ftpStream,$username,$password);
    if($login!=false)
    {
        echo 'Logged in </br>';
        $pasvMode = ftp_pasv($ftpStream, true);
        if($pasvMode!=false)
        {
            echo 'Entered passive mode </br>';
            // These lines aren't working:
            $listOfFiles = ftp_nlist($ftpStream,'.');
            var_dump($listOfFiles);
        }

        else
            echo 'ftp_pasv() fail </br>';
    }
    else
        echo 'Login failure </br>';
}
else
    echo 'ftp_connect fail </br>';

Когда я только пытаюсь подключиться к этому серверу, все работает хорошо, но когда я пытаюсь ftp_nlist, ничего не работает.Когда я пробую этот код на другом FTP-сервере, список файлов отображается правильно.Я действительно не знаю, откуда возникла проблема.

Я попытался подключиться к FTP из командной строки на веб-сервере, и вот результаты:

ftp> ls
Command okay.
150 File status okay; about to open data connection

ВотФайл журнала FileZilla при подключении с моего локального компьютера:

2018-05-22 15:45:03 5180 1 Réponse : 230 User logged in, proceed.
2018-05-22 15:45:03 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:03 5180 1 Commande : USER Username@IPADRESS:PORT
2018-05-22 15:45:04 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:04 5180 1 Réponse : 331 User name okay, need password.
2018-05-22 15:45:04 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:04 5180 1 Commande : PASS ****
2018-05-22 15:45:08 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:08 5180 1 Réponse : 230 User logged in, proceed.
2018-05-22 15:45:08 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:08 5180 1 Commande : SYST
2018-05-22 15:45:09 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:09 5180 1 Réponse : 215 Windows_CE version 6.0.
2018-05-22 15:45:09 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:09 5180 1 Commande : FEAT
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:10 5180 1 Réponse : 211-Features:
2018-05-22 15:45:10 5180 1 Réponse :   SIZE
2018-05-22 15:45:10 5180 1 Réponse : 211 End
2018-05-22 15:45:10 5180 1 Statut : Le serveur ne supporte pas les 
caractères non-ASCII.
2018-05-22 15:45:10 5180 1 Statut : Connecté 
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::ResetOperation(0)
2018-05-22 15:45:10 5180 1 Suivi : CControlSocket::ResetOperation(0)
2018-05-22 15:45:10 5180 1 Suivi : Measured latency of 1145 ms
2018-05-22 15:45:10 5180 1 Statut : Récupération du contenu du dossier...
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::ChangeDirSend()
2018-05-22 15:45:10 5180 1 Commande : PWD
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:10 5180 1 Réponse : 257 "/"
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::ResetOperation(0)
2018-05-22 15:45:10 5180 1 Suivi : CControlSocket::ResetOperation(0)
2018-05-22 15:45:10 5180 1 Suivi : 
CFtpControlSocket::ParseSubcommandResult(0)
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::ListSubcommandResult()
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:10 5180 1 Suivi : CFtpControlSocket::TransferSend()
2018-05-22 15:45:10 5180 1 Commande : TYPE I
2018-05-22 15:45:11 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:11 5180 1 Réponse : 200 Command okay.
2018-05-22 15:45:11 5180 1 Suivi : 
CFtpControlSocket::TransferParseResponse()
2018-05-22 15:45:11 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:11 5180 1 Suivi : CFtpControlSocket::TransferSend()
2018-05-22 15:45:11 5180 1 Commande : PASV
2018-05-22 15:45:12 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:12 5180 1 Réponse : 227 Entering Passive Mode 
(10,64,3,53,12,188)
2018-05-22 15:45:12 5180 1 Suivi : 
CFtpControlSocket::TransferParseResponse()
2018-05-22 15:45:12 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:12 5180 1 Suivi : CFtpControlSocket::TransferSend()
2018-05-22 15:45:12 5180 1 Commande : LIST
2018-05-22 15:45:12 5180 1 Suivi : CTransferSocket::OnConnect
2018-05-22 15:45:13 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:13 5180 1 Réponse : 150 File status okay; about to open 
data connection.
2018-05-22 15:45:13 5180 1 Suivi : 
CFtpControlSocket::TransferParseResponse()
2018-05-22 15:45:13 5180 1 Suivi : CFtpControlSocket::SendNextCommand()
2018-05-22 15:45:13 5180 1 Suivi : CFtpControlSocket::TransferSend()
2018-05-22 15:45:15 5180 1 Suivi : CTransferSocket::TransferEnd(1)
2018-05-22 15:45:15 5180 1 Suivi : CFtpControlSocket::TransferEnd()
2018-05-22 15:45:15 5180 1 Suivi : CFtpControlSocket::OnReceive()
2018-05-22 15:45:15 5180 1 Réponse : 226 Closing data connection. 
2018-05-22 15:45:15 5180 1 Suivi : 
CFtpControlSocket::TransferParseResponse()
2018-05-22 15:45:15 5180 1 Suivi : CFtpControlSocket::ResetOperation(0)
2018-05-22 15:45:15 5180 1 Suivi : CControlSocket::ResetOperation(0)
2018-05-22 15:45:15 5180 1 Suivi : 
CFtpControlSocket::ParseSubcommandResult(0)
2018-05-22 15:45:15 5180 1 Suivi : CFtpControlSocket::ListSubcommandResult()
2018-05-22 15:45:15 5180 1 Suivi : CFtpControlSocket::ResetOperation(0)
2018-05-22 15:45:15 5180 1 Suivi : CControlSocket::ResetOperation(0)
2018-05-22 15:45:15 5180 1 Statut : Contenu du dossier affiché avec succès

Возможно ли для сервера запретить ftp_nlist ()?

Извините за мой плохой английский, и заранее спасибо за ваши будущие ответы.

1 Ответ

0 голосов
/ 22 мая 2018

Похоже, ваш веб-хостинг блокирует исходящие соединения для передачи данных на FTP-сервер.

Вы можете попробовать использовать активный режим (удалите вызов ftp_pasv).Но маловероятно, что они разрешат входящие соединения (необходимые для активного режима), если они запрещают исходящие соединения.

Для справки, смотрите мою статью о настройке сети, необходимой для пассивного и активного режимов FTP - Хотя вы ничего не можете с этим поделать сами.Вам нужно связаться с вашим провайдером.

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