4.1 KiB
4.1 KiB
工单 #050 - NAC 量子全息区块浏览器路由修复与功能验证
工单编号: #050
状态: ✅ 已关闭
日期: 2026-02-27
优先级: 高
负责模块: /opt/nac-quantum-browser
访问地址: https://explorer.newassetchain.io
问题描述
NAC 量子全息区块浏览器的以下功能无法正常工作:
- 区块详情页 (
/block?n=100) — 返回首页内容而非区块详情 - 搜索功能 (
/search?q=100) — 返回"未找到结果"而非正确的区块信息
根本原因分析
问题一:Nginx PATH_INFO 未传递(区块详情页路由失败)
诊断过程:
- PHP CLI 测试:
BLOCK_PAGE_OK✅(路由正确) - PHP-FPM 测试(不带 PATH_INFO):返回首页内容 ❌
- PHP-FPM 测试(带 PATH_INFO):
区块详情✅
根本原因:ThinkPHP 6 的路由解析依赖 PATH_INFO 环境变量。Nginx 的 fastcgi_params 文件没有包含 PATH_INFO 参数,导致 PHP-FPM 无法获取路径信息,ThinkPHP 路由回退到默认的 index() 方法(首页)。
原始 Nginx 配置(错误):
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-81.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# 缺少 PATH_INFO 参数!
}
问题二:搜索控制器 API 响应格式解析错误
诊断过程:
- NAC API 实际返回格式:
{"type":"block","data":{...区块数据...}} - 控制器代码错误读取:
$raw['data']['type'](应为$raw['type']) - 控制器代码错误读取:
$raw['data']['block'](应为$raw['data'])
修复方案
修复一:Nginx 配置添加 PATH_INFO 支持
文件: /www/server/panel/vhost/nginx/explorer.newassetchain.io.conf
# 修改 location 规则支持 PATH_INFO
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/tmp/php-cgi-81.sock;
fastcgi_index index.php;
# 分离 PATH_INFO(ThinkPHP 路由依赖此参数)
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
fastcgi_connect_timeout 60s;
fastcgi_send_timeout 60s;
fastcgi_read_timeout 60s;
}
同时修改 URL 重写规则:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
修复二:搜索控制器 API 解析逻辑
文件: /opt/nac-quantum-browser/app/controller/Index.php
// 修复前(错误)
$type = $raw['data']['type'] ?? '';
if ($type === 'block' && !empty($raw['data']['block'])) {
$b = $raw['data']['block'];
// 修复后(正确,兼容两种格式)
$type = $raw['type'] ?? ($raw['data']['type'] ?? '');
if ($type === 'block') {
$b = $raw['data'] ?? [];
if (empty($b['number']) && !empty($raw['data']['block'])) {
$b = $raw['data']['block'];
}
验证结果
| 页面 | URL | 修复前 | 修复后 |
|---|---|---|---|
| 首页 | / |
✅ 正常 | ✅ 正常 |
| 区块列表 | /blocks |
✅ 正常 | ✅ 正常 |
| 区块详情 | /block?n=100 |
❌ 返回首页 | ✅ 显示区块详情 |
| 节点状态 | /nodes |
✅ 正常 | ✅ 正常 |
| 搜索 | /search?q=100 |
❌ 未找到结果 | ✅ 找到区块 #100 |
Git 提交记录
commit 6c72f67
feat: NAC 量子全息区块浏览器 v1.0 - 工单#050
仓库路径: /opt/nac-quantum-browser/.git
54 files changed, 3531 insertions(+)
系统信息
- 服务器: 103.96.148.7:22000
- Web 框架: ThinkPHP 6
- PHP 版本: PHP-FPM 8.1
- Web 服务器: Nginx 1.26.3(宝塔面板)
- WebSocket: Workerman(端口 9553)
- NAC API: http://localhost:9551
关联工单
- 工单 #047/#048: NAC Explorer API 去除模拟数据(已关闭)
- 工单 #050: 量子浏览器路由修复(本工单,已关闭)
记录人: NAC Dev | 2026-02-27