Directory Lister 介绍与选型指南

Directory Lister(PHPSoftwareLab/DirectoryLister)PHP 轻量目录列表/文件索引应用介绍与选型指南:定位、架构、功能特性、与 h5ai/Apaxy/filebrowser/Tiny File Manager 的量化对比与选型建议,版本与星数均于 2026-10-30 联网实查。

Directory ListerDirectory Lister文件服务器文件分享2026/10/30

Directory Lister 介绍与选型指南

目标:讲清 Directory Lister 是什么、能解决什么问题、与同类目录索引工具的差异与取舍,帮助读者在「静态文件仓库/软件分发站/内网资料库」场景下做选型决策。本文所有版本号、星数、配置事实均于 2026-10-30 联网溯源官方源实查(shields.io、Packagist、docs.directorylister.com、GitHub Releases.atom),未做本地实测。

一、环境信息

本文为认知与选型篇,信息来源与查询环境如下:

  • 溯源渠道:shields.io(版本/星数徽章)、repo.packagist.org(包元数据)、docs.directorylister.com(官方文档站)、github.com/DirectoryLister/DirectoryLister(Releases.atom)
  • 查询日期:2026-10-30
  • 本机验证网络:可直连 shields.io 与 repo.packagist.org;github.com 页面直连超时,版本事实以 shields.io 徽章返回值为准
  • 本文涉及的版本事实:Directory Lister 最新稳定版 v5.8.3(Packagist 发布时间 2026-10-30T03:25:47Z,MIT 许可,要求 PHP ≥ 8.2)

💡 说明:Directory Lister 的 GitHub 仓库为 DirectoryLister/DirectoryLister,作者 Chris Kankiewicz(Packagist 用户名 PHLAK),项目官网 https://www.directorylister.com,文档站 https://docs.directorylister.com。

二、软件概述

Directory Lister 是一个 PHP 编写的轻量级「目录列表/文件索引」应用:把它指向任意一个 web 服务器可访问的目录,它会扫描该目录并生成一个可浏览、可搜索、可下载的文件索引页,无需数据库、无需后台管理进程。

官方对其定位的一句话描述(镜像元数据 org.opencontainers.image.description,2026-10-30 实查):

📂 Directory Lister is the easiest way to expose the contents of any web-accessible folder for browsing and sharing.

几个关键身份信息(均为 2026-10-30 实查):

项目值来源
最新稳定版v5.8.3(2026-10-30 发布)Packagist / shields.io
许可证MITPackagist license 字段
语言与运行要求PHP ≥ 8.2(需 Zip、DOM、Fileinfo、Multibyte String 扩展)Packagist require.php / 官方安装文档
GitHub 星数2.5kshields.io stars 徽章
维护活跃度最近提交 today(2026-10-30 查询)shields.io last-commit 徽章
官方 Docker 镜像directorylister/directorylister(v5.0 起提供)官方安装文档

⚠️ 命名辨析:Directory Lister 与 Apache Directory(ApacheDS,Red Hat 系 389 Directory Server 同类的 LDAP 目录服务器)、Apache httpd 的 mod_autoindex(Apache 内建目录索引模块)是三个完全不同的东西。Directory Lister 是一个独立的 PHP 应用,只是运行时可以借助 Apache 或 Nginx 托管;它不提供 LDAP 目录服务,也不是 Apache 模块。

💡 技术拓展:把一个目录变成 web 可浏览页面,业界有三种实现层次——

实现层次代表原理适用场景
web 服务器内建索引Apache mod_autoindex、Nginx autoindex服务器模块直接渲染目录列表临时开放一个目录,零部署
索引增强脚本Directory Lister、h5ai、Apaxy在服务器上跑一层脚本/样式,增强内建索引对外文件仓库,要求美观/搜索/README
全功能文件管理器filebrowser、Tiny File Manager独立应用,带账号体系、上传、编辑需要多人管理文件,不只是"看"

Directory Lister 属于中间层:比内建索引功能完整(搜索/哈希/README/zip),比文件管理器轻得多(只读索引、无数据库)。

三、核心架构

Directory Lister 的架构极简,可以从「一个请求的生命周期」来理解(依据官方文档站 Configuration 与源码结构描述,docs.directorylister.com,2026-10-30):

  1. web 服务器层:官方 Docker 镜像内置 Apache 2.4(Debian)+ PHP(启用 deflate、rewrite 模块);手动安装时则要求 PHP 运行环境具备 Zip、DOM、Fileinfo、Multibyte String 四个扩展。
  2. 应用层:入口是单个 index.php,基于 PHP-DI 依赖注入容器组织配置与请求处理。请求参数风格为查询串:?dir=<子目录> 浏览、?file=<文件名> 下载、?search=<关键词> 搜索、?zip=<目录> 打包下载、?info=<文件名> 返回文件哈希 JSON。
  3. 配置层:环境变量(.env 文件或容器环境变量)是唯一的常规配置入口,涵盖排序、隐藏文件、README 渲染、zip 下载等约 22 个变量;少数高级项(hidden_files 数组、Memcached/Redis 连接闭包、HTTP 缓存时长、自定义排序函数)只能写在 app/config/app.php 中。
  4. 缓存层:默认 CACHE_DRIVER=file,可选 memcached 或 redis(对应 MEMCACHED_HOST/PORT、REDIS_HOST/PORT 变量);应用容器本身支持编译缓存(COMPILE_CONTAINER)。
  5. 模板与前端:服务端渲染 HTML,前端用 Alpine.js 做交互(暗色模式切换、文件信息弹层),代码高亮等资源打包在单页内。

这个架构带来的直接特性:没有数据库、没有常驻后台进程、没有账号体系——部署即静态目录 + 一个 PHP 应用,升级就是替换应用文件。

四、功能特性

以下特性清单整理自官方文档站 Introduction 与 Configuration Reference(2026-10-30 实查),逐项对应到配置入口:

  • 零配置安装:不写任何配置也能直接工作(默认列出应用根目录);Docker 形态下通过 FILES_PATH(镜像内预设为 /data)指定要列出的目录。
  • README 渲染:目录内的 README 文件会被解析为 Markdown 渲染在页面上,DISPLAY_READMES 控制开关,READMES_FIRST 控制 README 显示在文件列表之前还是之后。
  • 文件搜索:页面搜索框(快捷键 ? 聚焦),按 GET 参数 ?search=<关键词> 过滤当前列表,无结果时返回 "No results found" 页面。
  • 文件哈希校验:文件行上的 File Info 按钮展示 MD5/SHA1/SHA256,数据来自 ?info=<文件名> 返回的 JSON;MAX_HASH_SIZE(默认 1000000000 字节)限制参与哈希计算的文件大小上限,防止超大文件计算超时。
  • zip 打包下载:ZIP_DOWNLOADS 开启后,每个目录可整体打包下载(?zip=<目录>),ZIP_COMPRESS 控制是否对 zip 条目做 Deflate 压缩。
  • 隐藏文件规则:HIDE_DOT_FILES(点文件)、HIDE_VCS_FILES(Git/Mercurial 元数据)、HIDE_APP_FILES(应用自身文件)三个布尔开关,外加 HIDDEN_FILES_LIST(默认 .hidden 清单文件)与 app/config 中的 hidden_files 数组,均支持 glob 模式(*、**、{yml,yaml}、(!…) 断言等,见官方 File Matching Patterns 页)。
  • 排序控制:SORT_ORDER 支持 type(默认)/natural/name/accessed/changed/modified,REVERSE_SORT 反转;更复杂的排序可写匿名函数。
  • 多语言:内置 29 个语言包(app/translations/ 下 29 个 yaml,含 zh-CN.yaml、zh-TW.yaml),APP_LANGUAGE=zh-CN 即切换中文界面。
  • 主题:内置亮/暗两套主题,页面右上角可切换,偏好存在 cookie 中。
  • 图标识别:按文件扩展名映射图标(app/config/icons.php),常见格式可直观区分。
  • 官方 Docker 镜像:v5.0 起官方发布 directorylister/directorylister,另有官方维护的 directory-lister-compose 仓库提供预打包的 Compose 配置。

五、快速开始(最小可用示例)

Directory Lister v5.0 起官方提供 Docker 镜像,最小可用只需要一条命令(以下形式照自官方安装文档 Docker Run 节,2026-10-30 实查;<host_path> 换成你要列出的目录,<host_port> 换成空闲端口):

docker run --detach \
  --volume /srv/files:/data \
  --publish 8080:80 \
  directorylister/directorylister:5

启动后浏览器访问 http://<服务器IP>:8080 即看到 /srv/files 的文件索引页。这个最小示例适合先验证功能;长期部署建议使用 Docker Compose 并固定版本号,完整步骤(含自定义端口、网络、.hidden 隐藏清单与升级方法)见本专栏部署篇。

💡 说明:手动安装路径同样简单——从官网 https://www.directorylister.com 下载压缩包,解压拷贝到 web 服务器目录即可;或使用 composer create-project phlak/directory-lister(Packagist 实查)。两种方式的配置入口都是应用根目录的 .env 文件。

六、适用场景与限制

6.1 适用场景

结合其「只读索引、无数据库、无账号」的形态,Directory Lister 适合:

  • 软件/安装包分发站:对外提供固定版本文件的下载入口,README 渲染 + 文件哈希可承担"说明 + 校验"两个职责。
  • 内网资料库/文档归档浏览:团队把已有的目录结构直接暴露为可搜索的索引页,零迁移成本。
  • 构建产物/备份目录的快速浏览:配合 HIDDEN_FILES_LIST 隐藏中间产物,只暴露交付物。
  • 作为 Nginx/Apache autoindex 的升级替代:当内建索引的朴素列表不够用时(需要搜索、README、哈希、zip 打包)。

6.2 限制

  • 无内置认证:官方文档明确"Directory Lister does not include any form of authentication out of the box"(Authentication 页,2026-10-30 实查),公开部署即全公开;需要认证时官方给出的路径是 HTTP Basic(Apache .htpasswd / Nginx Basic Auth)或 Authelia 反代授权。
  • 只读索引,无上传/管理:不能通过页面上传、重命名、删除文件;这些需求属于 filebrowser/Tiny File Manager 一类全功能管理器的范畴。
  • 无细粒度权限:没有用户/目录 ACL 概念,隐藏文件规则是"展示层过滤"而非访问控制(知道文件名仍可能直接访问被隐藏的文件,敏感目录应配合 web 服务器层限制)。
  • 大目录与大文件:哈希计算受 MAX_HASH_SIZE 上限约束;目录级 zip 打包是实时流式压缩,超大目录的首次打包耗时与带宽都发生在请求线程上。
  • PHP 运行时依赖:手动安装需要 PHP ≥ 8.2 及 Zip/DOM/Fileinfo/Multibyte String 扩展;Docker 形态则无此顾虑。

七、同类选型对比

同赛道(目录索引/文件列表)主流开源工具横向对比。版本与星数为 shields.io 于 2026-10-30 实查值:

维度Directory Listerh5aiApaxyfilebrowserTiny File Manager
定位目录索引(只读增强)目录索引(只读增强)Apache autoindex 主题化全功能文件管理器单文件 PHP 文件管理器
实测版本v5.8.3v0.30.0无正式 release(AdamWhitcroft/Apaxy)v2.63.23v2.6
GitHub 星数2.5k6.1k1.9k36k6k
实现语言/运行依赖PHP ≥ 8.2(Zip/DOM/Fileinfo/Mbstring)PHP(需禁用部分函数配合)纯 HTML/CSS/JS + Apache autoindexGo 单二进制PHP 单文件
数据库无无无无(可选用 SQLite 认证库)无
搜索有(?search=)有(索引缓存)无(依赖浏览器页内查找)有有
README 渲染有(Markdown)有(Markdown)无部分(支持预览)无专门渲染
文件哈希展示有(MD5/SHA1/SHA256)无无无无
目录 zip 下载有(可选 deflate)有(tar 打包)无有有
上传/编辑/删除无无无有有
内置认证无(靠 web 服务器/反代)无(同左)无(同左)有(多用户)有(登录会话)
多语言29 种(含 zh-CN/zh-TW)多语言无多语言多语言
许可证MITMITUnlicenseApache-2.0自定义(商用需授权)

(星数/版本来源:shields.io GitHub release 与 stars 徽章,2026-10-30 实查;Apaxy 仓库无 tag 发布,以仓库 README 与 HEAD 为准。)

解读与选型建议:

  • 三者对比的关键差异在「只读索引」与「文件管理器」的分界:如果你只需要把一个目录变成漂亮的、可搜索的下载页,Directory Lister / h5ai / Apaxy 这一档就够了;一旦需要上传、多用户、在线编辑,直接跳到 filebrowser / Tiny File Manager 一档。
  • Directory Lister 与 h5ai 是同档直接竞品:h5ai 星数更高(6.1k)但实测最新 release 停在 v0.30.0;Directory Lister 维护节奏明显更活跃(2026-10-30 当天仍在发布,v5.8.3),且官方提供 Docker 镜像与官方 Compose 仓库,容器化部署路径更省心。
  • Apaxy 最轻(纯 Apache autoindex 换肤),但功能上没有搜索/哈希/zip,且依赖 Apache;如果宿主已是 Apache 且只想要"不丑的列表",它是最低成本选项。
  • 需要哈希校验展示(软件分发场景对下载完整性敏感)是 Directory Lister 独有的差异点,上表其余工具均不提供。
  • 许可证注意:Tiny File Manager 自定义许可对商用有限制;其余四者 MIT/Apache-2.0/Unlicense 均宽松。

八、参考链接