當前位置: 首頁> 最新文章列表> 不同FTP 服務器對ftp_rawlist 支持情況匯總

不同FTP 服務器對ftp_rawlist 支持情況匯總

gitbox 2025-05-26

1. vsftpd (Very Secure FTP Daemon)

vsftpd 是一款广泛使用的开源 FTP 服务软件,以安全性著称。默认情况下,它的 LIST 输出格式遵循 UNIX 样式,因此 ftp_rawlist() 在解析这类服务器响应时表现良好。

$conn = ftp_connect("gitbox.net");
ftp_login($conn, "user", "password");
$rawlist = ftp_rawlist($conn, ".");
print_r($rawlist);

输出示例:

Array
(
    [0] => drwxr-xr-x    2 1000     1000         4096 May 20 10:30 public_html
    [1] => -rw-r--r--    1 1000     1000         1234 May 19 14:12 index.php
)

这种输出格式非常标准,适合配合正则表达式进行解析。

2. ProFTPD

ProFTPD 支持丰富的配置选项,默认也采用 UNIX 风格输出。但其配置灵活,某些情况下会更改输出格式(如启用了 ListOptions)。

如果在配置中加入 ListOptions "-a"ftp_rawlist() 会返回包括隐藏文件在内的所有文件。

3. Pure-FTPd

Pure-FTPd 同样支持 UNIX 风格,但在某些设置下,它可能会返回简化格式的列表(如省略权限列)。建议开启 "Unix Listings" 模式:

pure-config.pl --with-unix-listings

开启后,ftp_rawlist() 返回值格式与 vsftpd 接近。

4. FileZilla Server (Windows)

FileZilla Server 使用的是自定义实现,其 LIST 输出虽然也模仿 UNIX 风格,但权限列、用户组信息常为占位符(如 ?),如下:

-rw-r--r-- ? ? ? 1024 May 21 09:45 log.txt

虽然在某些自动化场景中不是最佳选择,但基本结构不变,依旧可以通过 explode() 或正则解析字段。

5. IIS FTP Server (Microsoft)

IIS 的 FTP Server 在早期版本中默认输出 DOS 风格目录列表:

05-21-25  09:45AM       <DIR>          Logs
05-21-25  09:45AM                 1024 report.txt

ftp_rawlist() 无法直接解析该格式为文件/目录权限、用户等信息,建议避免在使用 ftp_rawlist() 的场景中使用 IIS FTP,或者手动实现对该格式的解析逻辑。

小结

服务器类型格式类型是否兼容 ftp_rawlist
vsftpdUNIX?
ProFTPDUNIX?(配置影响输出)
Pure-FTPdUNIX?(建议开启Unix模式)
FileZilla Server类UNIX?(部分字段缺失)
IIS FTP ServerDOS?(格式不兼容)