modern HTTP web server index
h5ai 是一个实现文件目录列表功能(file indexer)的 php 程序,支持浏览器在线预览文本文件(包括 MarkDown 渲染和各类源代码的语法高亮)、图片、音视频和打包下载等功能(部分功能需要安装或开启额外的程序/功能)。可以用作服务器文件目录的查看和展示。官方 demo 看这里。
安装好 PHP 服务器后,下载程序文件,解压后把 _h5ai
文件夹放到网站目录。接着,用浏览器访问 http://your_domain/_h5ai/public/index.php
(文件夹就放在网站根目录的话),提示输入密码,默认为空,直接点击就可以进入 h5ai info 界面,看到一些功能的状态。
看到有红字的话,说明一些功能需要根据提示进行额外的配置。比如 public
和 private
两个文件夹的缓存权限,需要给它们各自的 cache
文件夹 777 权限;视频文件的预览,则需要手动 apt install
一下 ffmpeg
。
一开始做到这一步之后,我半天也没找到应该怎么进入文件列表主界面……后来才发现,我误解了 h5ai 的工作原理。
其他许多使用 PHP 实现的文件管理器,是把程序放进某个目录后,访问之就可以查看相应目录下的文件。但 h5ai 并不是这样。简单地说,它的本体程序文件可以被放到任意的目录,但却可以实现访问网站下的其他任何目录都能通过调用 h5ai 程序来展示文件。
要做到这一点,需要对网页服务器的 index 默认位置做一个简单的配置。以 Nginx 为例,在 nginx.conf
(AWS 的 nginx 镜像默认配置文件位于 /opt/bitnami/nginx/conf/bitnami/bitnami.conf
) 中,修改 server {
下的 location 字段为:
1 |
|
也即在最后添加 /_h5ai/public/index.php
。注意,放在最后的优先级是为了保证访问有 index 文件的目录时,仍然直接解析 index。
以上操作之后,h5ai 的部署就全部完成啦。现在,直接通过域名和目录地址访问网站服务器中任何一个不带 index 的目录都可以调用 h5ai 显示文件列表啦。
最后值得说明的是,在 h5ai info 界面会提示去 _h5ai/private/conf/options.json
里设置密码(需要直接填写密码的 SHA512 hash),但这个密码只是 info 页面的访问密码,进入文件列表主界面是无法设置密码的。
好在我们可以直接通过修改 php 代码来增加访问密码功能。编辑 _h5ai/public/index.php
,在 <?php
的后一行增加:
1 |
|
在文件最后增加:
1 |
|
自定义上面的 username
和 password
字符串就可以啦。
参考链接