根因(两处叠加):
1) public/admin.php 缺失:FastAdmin 的 deny_module_list 含 admin,
后台必须通过 admin.php 以 BIND_MODULE=admin 访问 → 之前任何 /admin 都 404
2) PHP 8.5 将 (boolean) 列为编译期 E_DEPRECATED,TP5 Request.php:1159 命中
→ Error::appError 升级为 ErrorException,在 Request 类「自动加载」瞬间抛出,
早于任何模块级垫片,导致请求直接中断
修复:
- 新增 public/admin.php(标准 FastAdmin 入口,BIND_MODULE=admin)
- thinkphp/library/think/Request.php:1159 (boolean) → (bool),已备份
并固化为可复现脚本 scripts/patch_tp_php85.sh
- application/admin/common.php 与 application/index/common.php 增加 PHP8 兼容垫片
(application/common.php 不会被 TP5 自动加载,已还原为原样)
- nginx 伪静态新增 /admin、/admin/ → /admin.php(已备份 + nginx -t + 平滑 reload)
验证:/admin → 302 登录页、/admin.php/index/login → 200;
后台密码哈希与 DB 一致;验证码 /captcha 返回 PNG;163 项断言回归全通过
15 行
560 B
PHP
15 行
560 B
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | 后台入口文件(FastAdmin 约定:admin 模块被 deny_module_list 禁止,
|
||
// | 必须通过本入口以 BIND_MODULE 方式访问,避免从 index.php 直连后台)
|
||
// +----------------------------------------------------------------------
|
||
|
||
// 定义应用目录
|
||
define('APP_PATH', __DIR__ . '/../application/');
|
||
|
||
// 绑定当前入口文件到 admin 模块
|
||
define('BIND_MODULE', 'admin');
|
||
|
||
// 加载框架引导文件
|
||
require __DIR__ . '/../thinkphp/start.php';
|