ftp_rawlist всегда терпит неудачу на сервере FTPES в пассивном режиме - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужно подключиться к серверу FTPES для получения данных. Подключение и вход в систему работает просто отлично, но мой вызов с ftp_rawlist всегда дает сбой и возвращает «ложь».

Я использую этот код для отладки:

$ftp = ftp_ssl_connect($ftp_host);
if (ftp_login($ftp, $ftp_user, $ftp_pass)) {
    $p = ftp_pasv($ftp, true);
    var_dump($p);

    $r = ftp_rawlist($ftp, '/', true);
    var_dump($r);
} else {
    echo 'Could not login';
}

$p всегда верно, $r всегда ложно.

Когда я подключаюсь к серверу через Filezilla, все работает нормально, и я могу перечислить содержимое каталога и многое другое.

Обновление # 1: Попытка не только перечислить '/', но и различные подпапки на сервере, все они терпят неудачу через сценарий.

Обновление № 2: Также пытался использовать ftp_raw с командами для получения списка, но команда LIST выполняется в течение некоторого времени и затем вообще не возвращает никакого результата. Но СПРАВКА перечисляет LIST как допустимую команду для сервера ... Странно ...

Обновление № 3: Я попробовал phpseclib сейчас, но пока я могу подключиться, я не могу войти с комбинацией пользователя и пароля. Поддержка со стороны сопровождающего сервера FTPES не происходит («отлично работает для кого-то другого ...»), поэтому мне нужно выяснить это по-другому ...: -)

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Добавьте следующий вызов к ftp_set_option() в строке перед вызовом к ftp_pasv

ftp_set_option($ftp, FTP_USEPASVADDRESS, false);
ftp_pasv($ftp, true);
0 голосов
/ 26 сентября 2018

Чтобы покончить с этим: по мере приближения крайнего срока для этого проекта, решение должно быть найдено. И хотя это не настоящий ответ в смысле вопроса, я бы хотел показать, что я сделал, чтобы это исправить. Может быть, кто-то наткнулся на это через поиск в Google.

Помимо вещей, упомянутых в OP, я также попытался подключиться к FTPS, используя PHP и сертификат как auth , который тоже не работал. Поскольку ничего не работает, как положено, мне интересно, действительно ли сервер FTPS действительно настроен правильно.

Люди, которые запускали сервер, сказали мне, что все в порядке, и их CLI CURL-вызов хорошо работает для них, поэтому им не нужно больше расследовать проблемы.

В результате этого я настроил учетную запись песочницы на сервере, на котором включена shell_exec(). Теперь запущен скрипт, который получает список файлов через CURL, а затем загружает файлы через CURL с помощью команд, предоставленных поставщиком сервера. К этому серверу можно получить доступ через обычный SFTP, и поэтому он действует как «Прокси-FTP», который регулярно отражает структуру файлов удаленного сервера FTPS.

Хотя я нахожу это «решение» довольно «хакерским», на данный момент оно кажется надежным, стабильным и быстрым. Таким образом, мы сможем запустить эту операцию в этом году (она будет проводиться примерно за три месяца до Рождества), и мы рассмотрим ее в новом году и разработаем более стабильное решение.

Может быть, серверные ребята тоже меньше подвержены стрессу и готовы помочь ...; -)

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