/** * * 功能: 遍历ftp服务器上的所有文件(linux) * $ftp_id: ftp链接句柄 * $dir_address: 要遍历的目录 * 返回值: 二维数组 | false * */ function listFilesOnFTP($ftp_id, $dir_address) { $fileslist = array(); $count = 0; $contents = ftp_rawlist($ftp_id, $dir_address); if(!is_array($contents)) return false; foreach($contents as $entry) { $entry = str_replace(" 0 ", " * ", $entry); $pieces = strtok($entry, " "); $i = 0; while($pieces) { $i++; if($i == 1) $type = $pieces; //获取文件属性 if($i == 5) $size = $pieces; //获取文件大小 if($i == 9) $name = $pieces; //获取文件名 if($i > 9) $name = $name." ".$pieces; //获取完整名称 $pieces = strtok(" "); } $address = $dir_address.$name; //文件的完整地址 if($type[0] == 'd') //如果该文件是目录 { $tmp = listFilesOnFTP($ftp_id, $dir_address.$name.'/'); //递归 $fileslist[] = $tmp; $count = $count + count($tmp); }else{ //如果不是目录,逐项添加到数组 $fileslist[$count][] = $name; $fileslist[$count][] = $type; $fileslist[$count][] = $size; $fileslist[$count][] = $address; } $count++; } return $fileslist; } /** * * 简单调用范例 * */ $ftp_server = "127.0.0.1"; $conn_id = ftp_connect($ftp_server); $ftp_user = "username"; $ftp_pass = "password"; ftp_login($conn_id, $ftp_user, $ftp_pass); $dir_address = '/dir/'; //要遍历的目录 var_dump(listFilesOnFTP($conn_id, $dir_address)); 注意:这里的服务器系统为linux,文件类型不是win32的ntfs和vfat 文件属性是类似于-rwx—— 这样的表示方式