Доступ к списку каталогов FTP с помощью PHP

Мне нужно загрузить данные из общего FTP-сервера Бюро статистики труда для анализа. Я пытаюсь использовать PHP для извлечения списка, но я не уверен, как это сделать с открытым FTP-сервером – без каких-либо результатов ftp_login при возврате «false» и попытке входа в систему как анонимный зависает скрипт.

Мой код:

<?php // set up basic connection $ftp = ftp_connect("ftp.bls.gov"); ftp_login($ftp, "anonymous", ""); ftp_pasv($ftp, true); var_dump(ftp_rawlist($ftp, "/pub/time.series/la/")); ?> 

Ваш скрипт работает для меня ( см. Вывод ), я получаю хороший список каталогов. Обратитесь к системному администрированию сервера, на котором запущен ваш PHP-скрипт, и попросите поддержки. Похоже, это вопрос конфигурации сети для меня.

Кроме того, всегда проверяйте возвращаемые значения функции для ошибок перед продолжением:

 // connect $ftp = ftp_connect("ftp.bls.gov"); if (!$ftp) die('could not connect.'); // login $r = ftp_login($ftp, "anonymous", ""); if (!$r) die('could not login.'); // enter passive mode $r = ftp_pasv($ftp, true); if (!$r) die('could not enable passive mode.'); // get listing $r = ftp_rawlist($ftp, "/pub/time.series/la/"); var_dump($r); 

Что такое анонимный FTP?

Анонимный FTP – это средство, с помощью которого архивные сайты позволяют получить общий доступ к своим архивам информации. На этих сайтах создается специальная учетная запись «анонимный». Пользователь «анонимный» имеет ограниченные права доступа к хосту архива, а также некоторые операционные ограничения. Фактически, единственными разрешенными действиями являются вход в систему с использованием FTP, перечисление содержимого ограниченного набора каталогов и извлечение файлов. Некоторые сайты ограничивают содержимое каталога, анонимный пользователь которого также может видеть. Обратите внимание, что «анонимным» пользователям обычно не разрешается передавать файлы на сайт архива, но они могут только извлекать файлы с такого сайта.

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

Выдержка из: Как использовать анонимный FTP (RFC 1635)

Попробуйте этот код Php. Надеюсь, это будет полезно:

 <?php $connect = ftp_connect("ftp.hostname.com"); $result = ftp_login($connect, "username", "password"); $a = ftp_nlist($connect, "code22"); foreach($a as $value){ echo $value,"<BR>"; } ?>