使用PHP访问FTP目录列表

Mar*_*ios 7 php ftp

我需要从劳工统计局的公共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/"));
?>
Run Code Online (Sandbox Code Playgroud)

hak*_*kre 12

你的脚本适合我(见输出),我得到一个很好的目录列表.请联系您的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);
Run Code Online (Sandbox Code Playgroud)

什么是匿名FTP?

匿名FTP是存档站点允许对其信息档案进行一般访问的一种方法.这些网站创建了一个名为"匿名"的特殊帐户.用户"anonymous"具有对存档主机的有限访问权限以及一些操作限制.事实上,允许的唯一操作是使用FTP登录,列出有限的一组目录的内容,以及检索文件.有些网站限制了匿名用户可以看到的目录列表的内容.请注意,通常不允许"匿名"用户将文件传输到存档站点,但只能从此类站点检索文件.

传统上,这个特殊的匿名用户帐户接受任何字符串作为密码,尽管通常使用密码"guest"或一个人的电子邮件(e-mail)地址.一些存档站点现在明确要求用户的电子邮件地址,并且不允许使用"访客"密码登录.提供电子邮件地址是一种礼貌,允许存档网站运营商了解谁在使用他们的服务.

摘自:如何使用匿名FTP(RFC 1635)