简介
本文档为 DouPHP 配置管理的权威参考,面向系统管理员与开发者。内容覆盖配置文件结构、环境变量(常量)、动态配置、路由与安全策略、存储与云服务对接、AI 创作参数等核心配置功能。文档同时说明配置的加载顺序、优先级、继承机制以及安全注意事项,并提供常见问题的定位思路与最佳实践。
项目结构
DouPHP 的配置集中在根目录的 config 文件夹中,由框架引导阶段统一加载并合并到运行时配置容器中。入口流程如下:
- 应用入口 index.php 引入 core/bootstrap.php。
- bootstrap.php 定义路径常量、协议常量,加载数据库与基础常量配置,注册自动加载器、容器、路由与请求对象。
- 各业务端(前台、后台、API)在 Init::boot 阶段进一步加载安全、文件系统、AI 等专项配置,并初始化相关服务。
graph TB
A["index.php"] --> B["core/bootstrap.php"]
B --> C["config/config.php<br/>数据库/应用密钥/调试开关"]
B --> D["config/system.php<br/>系统恒定常量"]
B --> E["config/module.php<br/>模块清单与分组"]
B --> F["core/autoload.php<br/>自动加载"]
B --> G["DI 容器 / 路由 / Request"]
G --> H["前端 Init::boot<br/>加载 security/file/ai 等配置"]
H --> I["服务初始化<br/>Storage/Route/Language等"]
图表来源
- index.php:14-41
- core/bootstrap.php:24-165
- front/init/Init.php:214-247
章节来源
- index.php:14-41
- core/bootstrap.php:24-165
核心组件
- 基础配置:数据库连接、字符集、应用密钥、调试开关、目录别名等。
- 系统配置:固定内建模块、小程序内置模块、保留 URL 段、隐藏模块等系统级常量。
- 模块配置:栏目型与单页型模块清单、导航与菜单可见性、小程序内置模块等。
- 路由配置:URL 风格规则(页面、栏目、简单模块),支持短地址与分页段。
- 安全配置:可信代理、可信 Host、响应头、限流、会话 Cookie 硬化。
- 存储配置:磁盘驱动、上传限制、允许扩展名、缩略图策略。
- 云服务配置:主站与豆壳云 API 基址、下载白名单。
- AI 配置:提示词模板、图像输入模型通配、尺寸归一化策略、横幅素材上限。
章节来源
- config/config.php:15-52
- config/system.php:11-34
- config/module.php:1-132
- config/route.php:15-356
- config/security.php:17-87
- config/file.php:17-61
- config/cloud.php:18-33
- config/ai.php:15-176
架构总览
配置系统在启动早期完成"静态配置 + 运行期配置"的统一装配:
- 引导阶段(bootstrap):加载 config/config.php 与 config/module.php,定义 DOU_DB_CONFIG、DOU_MODULE_MAP 等全局常量,供后续服务实例化使用。
- 初始化阶段(InitTrait):按职责加载安全、文件系统、AI 等专项配置,注入到 Config 命名空间。
- 运行时:通过 Facade 与 Service 访问配置,如 Storage、Request、Route 等。
sequenceDiagram
participant U as "用户请求"
participant I as "index.php"
participant B as "core/bootstrap.php"
participant CFG as "Config(多源合并)"
participant INIT as "Init : : boot"
participant S as "服务/中间件"
U->>I : HTTP 请求
I->>B : require bootstrap
B->>CFG : 加载 config/config.php
B->>CFG : 加载 config/module.php
B->>S : 注册容器/路由/Request
I->>INIT : 调用 Init : : boot()
INIT->>CFG : 加载 security/file/ai 等配置
S-->>U : 返回响应
图表来源
- index.php:14-41
- core/bootstrap.php:59-165
- front/init/Init.php:214-247
详细组件分析
基础配置(config/config.php)
- 数据库连接:主机、库名、用户名、密码、表前缀。
- 字符集与应用标识:UTF-8、系统签名。
- 目录别名:admin/api/miniprogram 目录名可配置。
- 重写与密钥:是否启用 admin 重写、应用密钥。
- 调试开关:控制异常渲染与调试输出。
建议:
- 生产环境关闭调试,避免敏感信息泄露。
- 应用密钥应独立于代码仓库管理。
章节来源
- config/config.php:15-52
系统配置(config/system.php)
- 前台固定内建模块:index、page、search、captcha、sitemap、llms 等不依赖模块启用的路由判定。
- 小程序内置模块:始终注册进 app.json 的模块集合。
- 保留 URL 首段:不可被模块短名占用的系统级 URL 段。
- 小程序专属页:无对应业务模块的直接登记页面。
- 隐藏模块:不参与前台主导航、后台菜单的系统级 single 模块。
用途:
- 确保系统级功能的路由稳定性与小程序兼容性。
- 与 module.php 的用户可调模块账本分离,避免误操作影响核心功能。
章节来源
- config/system.php:11-34
模块配置(config/module.php)
- 栏目型模块:产品、文章、案例、视频等列表类内容。
- 单页型模块:订单、用户、钱包、积分、表单、投票等。
- 关联集合:用户中心、工作台、下单商品、隐藏菜单/导航等。
用途:
- 决定前台路由、导航、后台菜单、小程序内置模块等。
- 与 system.php 的固定内建模块配合,保证路由稳定性。
章节来源
- config/module.php:1-132
- config/system.php:11-34
路由配置(config/route.php)
- PAGE:单页面规则,支持后缀、前缀、ID 模式。
- COLUMN:栏目模块规则,支持分类别名、slug、日期归档、短地址家族。
- SIMPLE:简单模块规则,支持 class/action/id 等。
要点:
- 每条规则包含 pattern、params、target、module_fixed、short_rules。
- 短地址模块将顶级分类别名替换模块名段,提升 SEO 友好度。
- 可通过复制 route_custom.php 覆盖部分风格,无需全量复制。
章节来源
- config/route.php:15-356
安全配置(config/security.php)
- 可信代理:仅当 REMOTE_ADDR 命中可信代理时采信 X-Forwarded-*。
- 可信 Host:防止 Host 头注入对外 URL。
- 响应头:X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、HSTS。
- 限流:文件后端目录与默认配额。
- 会话 Cookie:httponly、secure、samesite、严格模式。
建议:
- 生产环境开启 HSTS(HTTPS 且 enabled)。
- 明确 trusted_hosts,避免混合部署下 URL 污染。
- 保持 samesite=Lax/Strict,use_strict_mode=true。
章节来源
- config/security.php:17-87
存储配置(config/file.php)
- 默认驱动与上传默认值:大小限制、允许扩展名、图片质量、缩略图目录。
- 磁盘声明:local 与 avatar_admin 等自定义磁盘。
- 约定路径:images/{module}/icon/ 等自动推导,减少重复配置。
建议:
- 谨慎放开 svg 等脚本风险扩展名。
- 对头像等小图设置更严格的上传上限。
章节来源
- config/file.php:17-61
云服务配置(config/cloud.php)
- 云服务 API 基址:用于在线安装、资源解析等。
- 下载白名单:校验 install-resolve 返回的 download_url。
建议:
- 生产环境指向官方域名,避免篡改。
- 未配置时不发起云服务请求,确保离线可用。
章节来源
- config/cloud.php:18-33
AI 配置(config/ai.php)
- 提示词模板:labels、system、instruction、banner_styles、banner_material。
- 图像输入模型通配:qwen-image-* 等。
- 图像尺寸归一化:按模型族或供应商协议设定范围/预设/回退。
- 横幅素材:张数上限与单张字节上限。
建议:
- 根据实际模型能力调整 image_size 的 range/presets。
- banner 素材上限与上传限制需与前端一致。
章节来源
- config/ai.php:15-176
依赖关系分析
- bootstrap 阶段依赖 config/config.php 与 config/module.php,生成 DOU_DB_CONFIG 与 DOU_MODULE_MAP。
- InitTrait 在 boot 阶段加载 security/file/ai 等配置,注入到 Config。
- 中间件与服务通过 Facade/Service 读取配置,如 Request、Storage、Route 等。
graph LR
CFG["config/config.php"] --> BOOT["core/bootstrap.php"]
MOD["config/module.php"] --> BOOT
SYS["config/system.php"] --> BOOT
SEC["config/security.php"] --> INIT["Init::boot"]
FIL["config/file.php"] --> INIT
AI["config/ai.php"] --> INIT
INIT --> SVC["服务/中间件"]
BOOT --> SVC
图表来源
- core/bootstrap.php:59-165
- front/init/Init.php:214-247
章节来源
- core/bootstrap.php:59-165
性能与热重载
- 配置加载时机:
- 基础配置在 bootstrap 阶段一次性加载,并通过常量缓存(如 DOU_DB_CONFIG、DOU_MODULE_MAP)避免重复 include。
- 专项配置在 Init::boot 阶段加载,集中注入 Config。
- 热重载:
- 当前实现未提供进程内热重载;修改配置后需重启 PHP-FPM/进程以生效。
- 对于频繁变更的运行时参数,建议使用数据库或缓存层进行动态下发,并在服务层按需刷新。
- 性能建议:
- 避免在高频路径中重复读取大配置;优先通过 Facade/Service 获取。
- 合理设置图片质量与缩略图策略,减少带宽与 IO。
故障排查指南
- 无法连接数据库:
- 检查 config/config.php 中的主机、库名、用户名、密码、表前缀是否正确。
- 确认 storage/state/admin_dir.php 未干扰 ADMIN_DIR。
- 验证 DOU_DB_CONFIG 常量是否正确序列化数据库连接信息。
- 路由不生效:
- 核对 config/route.php 的规则与模块名匹配,必要时复制 route_custom.php 覆盖。
- 检查 module.php 中模块是否在 column/single 列表中。
- 安全相关错误:
- 若 behind 反向代理,需在 security.trusted_proxies 添加代理出口 IP/CIDR。
- 若出现 Host 头问题,配置 security.trusted_hosts。
- 上传失败:
- 检查 file.upload_defaults.allow_extensions 与磁盘 root 权限。
- 注意 SVG 默认禁用,确需时显式开启。
- AI 功能异常:
- 核对 ai.image_input 模型通配与 ai.image_size 策略是否匹配实际模型。
- 检查 banner 素材上限与单张字节限制。
章节来源
- config/config.php:15-52
- config/route.php:15-356
- config/module.php:1-132
- config/security.php:17-87
- config/file.php:17-61
- config/ai.php:15-176
结论
DouPHP 的配置体系采用"引导阶段加载基础配置 + 初始化阶段加载专项配置"的分层设计,结合常量缓存与模块化组织,兼顾灵活性与性能。通过安全、存储、路由、AI 等专项配置,可满足企业级站点在不同部署环境下的需求。建议在生产环境严格管控密钥与敏感配置,遵循最小权限原则,并结合监控与日志快速定位问题。
附录:配置项速查
- 数据库连接:host、name、user、pass、prefix(config/config.php)。
- 应用密钥与调试:DOU_APP_KEY、DOU_DEBUG(config/config.php)。
- 系统常量:front_fixed_module、miniprogram_builtin_module、reserved_first_segment(config/system.php)。
- 模块清单:column_module、singlemodule、link、noshow(config/module.php)。
- 路由风格:page/column/simple 及其规则 family(config/route.php)。
- 安全栈:trusted_proxies、trusted_hosts、headers、throttle、session(config/security.php)。
- 存储:default、upload_defaults、disks(config/file.php)。
- 云服务:api_base、download_base(config/cloud.php)。
- AI:prompts、image_input、image_size、banner(config/ai.php)。