From 690228e7c11fcd038688935040416af56e469023 Mon Sep 17 00:00:00 2001 From: laoyang Date: Fri, 23 Oct 2026 09:07:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E8=A3=85=E4=BD=93=E6=A3=80=EF=BC=9A?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20fileinfo=20=E8=AF=B4=E6=98=8E=EF=BC=88?= =?UTF-8?q?=E5=8F=AA=E5=BD=B1=E5=93=8D=E6=9C=AC=E6=9C=BA=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原先写「上传校验会更严格」是不准确的:OSS 存储模式下,附件校验走对象存储 返回的 Content-Type(lib/attach.php 的 oss 分支),根本不调用 finfo。真正用到 fileinfo 的只有本机存储分支(lib/attach.php 的 local 分支、media.php)和 media.php 的本机附件 MIME 探测。 改动: - install.php 体检项说明改为「按文件内容识别附件类型(仅本机存储模式用得上)」, 缺失文案补上「不影响安装」,补救提示写清 OSS 模式以对象存储返回的类型为准、 与本扩展无关,避免管理员误以为装个扩展就补了个安全缺口。 - README 同步区分两种存储模式;补充两点排查经验: 面板显示「有」不等于运行中的进程已加载,要看 php.ini 里的 extension 行; 且改完 ini 必须重启/重载 PHP-FPM 才生效(reload 即可,不必 restart)。 验证:php -l 双版本通过;安装向导 60/60、主回归 25/25、PHP 8.5 兼容 19/19; 线上部署 17/17,6 个文件 md5 逐个一致,冒烟全绿。 --- README.md | 8 ++++++-- install.php | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 32e4628..d374c77 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,13 @@ feedback/ 2. 确认该站点使用的 PHP 版本 **≥ 7.4**(推荐 8.1~8.5;**8.5 已逐项实测,无弃用告警**),并已启用扩展: **pdo_sqlite、sqlite3、openssl、mbstring**(宝塔默认均已有;在「软件商店 → PHP → 安装扩展」可查看)。 **curl 为可选**:有则优先用它和 OSS 通信,没有会自动退回 PHP 内置的流式请求,功能不受影响。 - **fileinfo 为推荐**:开启后上传时按文件**真实内容**判断类型(`finfo`); - 没有也能正常用,但类型校验会退化为「扩展名 + 浏览器声明的 MIME」。 + **fileinfo 为推荐**:**本机存储模式**下,上传时按文件**真实内容**判断类型(`finfo`); + 没有也能正常用,但该模式下的类型校验会退化为「扩展名 + 浏览器声明的 MIME」。 + 注意:**OSS 存储模式**的类型判定走对象存储返回的 `Content-Type`,不经过 `finfo`, + 所以这个扩展只影响本机存储。 ⚠️ 新装一套 PHP(尤其宝塔里的 8.5)时 `fileinfo` 常常**默认没开**,从旧版本切过来要顺手检查一次。 + 面板上显示"有"不等于已在运行中的进程里加载 —— 要看 `php.ini` 里的 `extension=` 行, + 而且**改完 ini 必须重启/重载 PHP-FPM** 才会生效(reload 即可,不必 restart)。 3. 给数据库目录写权限(宝塔一般已允许): ```bash chown -R www:www /www/wwwroot/你的域名/feedback diff --git a/install.php b/install.php index c4431fc..93d5a01 100644 --- a/install.php +++ b/install.php @@ -38,9 +38,9 @@ function fb_install_checks() { 'curl' => '访问 OSS(可选,没有会退回 PHP 流式请求)', 'mbstring' => '中文字数统计(可选)', 'fileinfo' => [ - '上传文件的真实类型识别(推荐开启)', - '未启用(仍可用,但上传类型只按扩展名核对)', - '建议在 PHP 设置里开启 fileinfo,上传校验会更严格', + '按文件内容识别附件类型(仅本机存储模式用得上)', + '未启用(不影响安装;本机存储时只按扩展名核对)', + '建议开启。注意 OSS 存储模式的类型判定以对象存储返回的 Content-Type 为准,不经过本扩展', ], ];