使用PHP访问FTP目录清单


Accessing an FTP directory listing with 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登录,列出一组有限目录的内容,并检索文件。有些网站限制目录列表的内容匿名用户也可以看到。请注意,"匿名"用户不是通常允许将文件传输到存档站点,但只能从这样的站点检索文件。

传统上,这个特殊的匿名用户帐户接受任何字符串作为密码,尽管通常使用密码"客人"或某人的电子邮件(电子邮件)地址。一些档案网站现在明确要求用户提供电子邮件地址,但不会这样做允许使用"guest"密码登录。提供电子邮件地址这是一种礼貌,可以让档案馆的运营者有所了解吗谁在使用他们的服务。

节选自:如何使用匿名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>";
}
?>