根因(两处叠加):
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 项断言回归全通过
11 行
327 B
PHP
11 行
327 B
PHP
<?php
|
||
|
||
/**
|
||
* 前台 index 模块公共文件
|
||
*
|
||
* PHP 8.x 兼容垫片(ThinkPHP 5.0):
|
||
* PHP 8.4+ 的 E_DEPRECATED 会被 think\Error::appError() 升级为异常,
|
||
* 本文件在模块初始化阶段加载,用于避免前台页面 404。
|
||
*/
|
||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_NOTICE);
|