什么是 h5ai
H5ai是一款功能强大 php 文件目录列表程序,由德国开发者 Lars Jung 主导开发,它提供多种文件目录列表呈现方式,支持多种主流 Web 服务器,例如 Nginx、Apache、Cherokee、Lighttpd 等,支持多国语言,可以使用本程序在线预览文本、图片、音频、视频等。
请注意,默认情况下,放到目录下的 .php 文件将会被直接执行,并不以文本显示。
安装
1.1 首先需要搭建好 Web 服务器,例如 LNMP(Linux/Nginx/MySQL/Php)组合,本文直接以 LNMP 组合为例。
推荐使用 PHP 7 版本。
1.2 下载 h5ai 安装包
转至官网下载:https://larsjung.de/h5ai/
将文件解压后放入网站根目录,注意目录结构应为:
webroot/_h5ai/private等
设置PHP
1.3 设置好虚拟主机后,编辑虚拟主机配置文件:即,修改下nginx的配置文件设置网站的首页,index index.html index.php /_h5ai/public/index.php;
vim /usr/local/nginx/conf/vhost/your_domain.conf
1.3.1 将 root 一行,改为:
index index.html index.php /_h5ai/public/index.php;
1.4 去除被禁用的 PHP 函数:
vim /usr/local/php/etc/php.ini
搜索 scandir
、exec
、passthru
,将其从被禁用的函数中删除。
1.5 重启 web 服务器:
service php-fpm restart
service nginx reload
宝塔面板下设置如下:宝塔nginx配置可以在后台-网站-对应的网站-配置文件找到
修改php配置-禁用函数,解除禁用函数scandir、exec和passthru、putenv。如果禁用列表中有这四个函数,删除即可。
修改配置文件
如果你使用的是Nginx,则只需要复制以下代码:
/_h5ai/public/index.php
在宝塔面板的网站设置中,找到配置文件,以index开头的一行
将代码复制到行末的分号前面,
保存配置文件后,访问域名就可以看到h5ai已经搭建成功啦!
只需要将文件/文件夹上传至网站目录,即可在此处显示。
1.6 虚拟主机 ROOT 目录大概是这个样子的,要在网站上显示的目录和 _h5ai 文件夹放在一起:
├── _h5ai
│ ├── CHANGELOG.md
│ ├── private
│ ├── public
│ └── README.md
├── 您要显示的文件夹
│ ├── 子文件夹1
│ ├── 文件1
│ └── 文件2
└── 您要显示的文件夹
├── 文件1
└── 文件2需要注意的是,在虚拟主机根目录下,如果有
index.html
的话(一些面板可能会放置一个默认的 index.html 文件),请将其删除,否则不显示虚拟主机下的任何目录及文件。
开启 h5ai 更多功能
到目前为止,h5ai 可以正常使用了,但是我们可以开启 _h5ai 全部功能。通过 http(s)://your_domain/_h5ai/public/index.php
可以查看 _h5ai 的全部功能开启情况,默认密码是空的。
2.1 视频缩略图拓展 FFmpeg
debian 8:
2.1.1 编辑软件源文件:
vim /etc/apt/sources.list
2.1.2 添加四个软件源
-
- deb http://www.deb-multimedia.org jessie main non-free
- deb ftp://ftp.deb-multimedia.org jessie main non-free
- deb http://www.deb-multimedia.org stable main non-free
- deb ftp://ftp.deb-multimedia.org stable main non-free
2.1.3 更新软件源
-
- apt-get -y update
2.1.4 安装 ffmpeg
apt-get -y install ffmpeg
Ubuntu 16.04+:
2.1.1 直接通过命令安装:
apt-get -y install ffmpeg
CentOS:
2.1.1 安装 FFmpeg 或 libav。
FFmpeg:
注意:请转至 http://www.ffmpeg.org/releases/ 查看最新的 FFmpeg 版本。
编译安装。
-
- wget http://www.ffmpeg.org/releases/ffmpeg-*.*.tar.gz
- tar -zxvf ffmpeg-*.*.tar.gz
- cd ffmpeg-*.*
- ./configure
- make
- make install
libav:
下载源码编译即可。
2.2 略缩图功能
2.2.1 图片:
将 _h5ai 中,private 与 public 文件夹中的 cache 目录设置权限为 755。
2.2.2 EXIF:
通过 phpize 安装 PHP 的 exif 模块即可。
2.2.3 视频略缩图:
参考 2.1 安装 FFmpeg 即可。
2.2.3 PDF 略缩图:
安装 ImageMagick。
可使用如下命令:
Ubuntu/Debian:
apt-get install ImageMagick -y
CentOS:
yum install ImageMagick -y
在宝塔面板找到PHP管理(上文提到过哟),安装拓展。
PDF缩略图拓展
安装imagemagick即可满足。需要进入SSH终端
Ubuntu/Debian系统:apt-get install imagemagick -y
CentOS系统:yum install ImageMagick -y
2.3 Shell tar、Shell zip和Shell du
参考 1.4 去除在 php.ini 中被禁用函数 exec与 passthru 即可。
另外去除禁用的 scandir 函数(如果有),不然会导致无法显示目录。
2.4 options.json 中的更多功能
位于 _h5ai/private/conf 目录下。
打包下载:
搜索 “download”
127 行,enabled 由 false 改为 true。
文件信息及二维码:
搜索 “info”
185 行,enabled 由 false 改为 true。
默认简体中文:
搜索 “l10n”
201行,lang由en改为zh-cn
202 行,enabled 由 false 改为 true。
搜索功能:
搜索 “search”
308行,enabled 由 false 改为 true。
文件及文件夹多选:
搜索 “select”
323 行,enabled 由 false 改为 true。
修改http(s)://your_domain/_h5ai/public/index.php默认密码:
首先生成自定义 sha512 密码:
打开 http://md5hashing.net/hashing/sha512
在左侧输入你想设置的密码,点击“hash it”:
点击“hash it”后,就会生成相应的sha512密码:
点击“Copy Hash”将密码复制到粘贴板。
然后在options.json里搜索 “passhash”,大概第 10 行,将其密码粘贴改成刚刚成的就可以了。
此时,再访问http(s)://your_domain/_h5ai/public/index.php就需要密码了,输入你设置的密码(转换前的)即可打开页面。
上一张完整开启所有功能的截图:
2.6 在目录头部或尾部显示 HTML 内容
在需要显示自定义 HTML 的目录下,添加 _h5ai.headers.html
和/或 _h5ai.footers.html
。这个通常用于对该目录的一些说明。支持 HTML 标签。
_h5ai.headers.html 头部 HTML
_h5ai.footers.html 尾部 HTML
这时候基本搭建完毕,如果想分享什么东西的话就直接传到网站的根目录里边就可以供其他人下载了,h5ai还有很多功能可以选择,更详细的还是推荐看看官方的文档 https://larsjung.de/h5ai/
为共享文件页面设置密码
一般h5ai安装后都是不需要用户名和密码就可以直接查看目录的,这样很不好,所以我们需要手动添加些代码,使其需要输入用户名和密码才能查看。
方案一:
进入h5ai
目录找到_h5ai/public/index.php
并编辑
1、在头部<?php
的下一行,增加
auth();
2、在底部增加
function auth ()
{
$valid_passwords = array ("账号" => "密码");
$valid_users = array_keys($valid_passwords);
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}
}
注:账号和密码可以随便填。
方案二:
打开_h5ai/public/index.php
在文件头部添加
mima();
在两句define后面添加
function mima(){
$user=array('dnmr','net');
if(!($user[0]===$_SERVER['PHP_AUTH_USER'] && $user[1]===$_SERVER['PHP_AUTH_PW'])){
header('WWW-Authenticate: Basic realm="MY Mark"');
header('HTTP/1.0 401 Unauthorized');
die("please login");
}
}
如下图:
dnmr 和net 分别为 账号 和 密码,自己随便设置。
修改后网页效果: