简介
本文件面向系统管理员,聚焦 DouPHP 的系统级配置,尤其是 config/config.php 的核心作用与关键参数。内容涵盖数据库连接(主机、端口、用户名、密码、表前缀)、字符集、系统标识符、目录定义、安全与文件存储相关配置项;说明各参数的含义、默认值、修改方法与注意事项;给出生产与开发环境的完整配置示例;解释引导过程中配置的加载顺序与作用域;并提供常见配置问题的排查与解决方案。
项目结构
DouPHP 将“站点运行期配置”集中在 config/ 目录,由框架在启动阶段统一加载并注入到全局配置中。入口 index.php 引入 core/bootstrap.php,后者负责定义根路径、安全协议常量、检查安装状态、载入站点配置文件、合并模块映射、注册自动加载与门面等。
graph TB
A["index.php"] --> B["core/bootstrap.php"]
B --> C["config/config.php<br/>数据库/字符集/目录/应用密钥/调试开关"]
B --> D["config/security.php<br/>可信代理/Host白名单/安全头/限流/会话"]
B --> E["config/file.php<br/>文件系统/上传默认/磁盘映射"]
B --> F["config/system.php<br/>固定模块/保留URL段/小程序页面"]
核心组件
- 站点配置(config/config.php)
- 数据库连接:主机、库名、用户名、密码、表前缀
- 字符集:DOU_CHARSET
- 系统标识:SYSTEM_SIGN
- 目录定义:ADMIN_DIR、API_DIR、MINIPROGRAM_DIR
- 管理后台重写:ADMIN_REWRITE
- 应用密钥:DOU_APP_KEY
- 调试开关:DOU_DEBUG
- 安全配置(config/security.php)
- 可信代理、可信 Host、安全响应头、限流、会话 Cookie 硬化
- 文件与上传(config/file.php)
- 默认驱动、上传限制、允许扩展名、图片质量、缩略图目录、磁盘映射
- 系统常量(config/system.php)
- 前台固定模块、小程序内置模块、保留 URL 首段、小程序额外页、不参与 app.json 的 single 模块、后台隐藏 single 模块
架构总览
引导流程中,配置加载顺序与作用域如下:
- 入口 index.php 定义 IN_DOUCO 并引入 core/bootstrap.php
- bootstrap.php 定义 ROOT_PATH、CONFIG_PATH、STORAGE_PATH、HTTP/IS_HTTPS
- 若未安装则跳转安装程序
- 可选读取 storage/state/admin_dir.php(用于覆盖 $admining),再载入 config/config.php
- 基于 config/config.php 中的 ADMIN_DIR/API_DIR/MINIPROGRAM_DIR 定义 CORE_PATH/LIBRARY_PATH/FRONT_PATH/API_PATH/ADMIN_PATH/MINIPROGRAM_PATH/PLUGIN_PATH
- 读取并序列化 module.php(模块启用清单)
- 将数据库变量聚合为 DOU_DB_CONFIG(host/user/pass/name/prefix)供后续 DB 连接使用
- 注册自动加载、门面别名、DI 容器、路由调度器、Request 单例、全局助手等
sequenceDiagram
participant U as "浏览器"
participant I as "index.php"
participant B as "core/bootstrap.php"
participant CFG as "config/config.php"
participant SEC as "config/security.php"
participant FIL as "config/file.php"
participant SYS as "config/system.php"
U->>I : 发起请求
I->>B : require bootstrap
B->>B : 定义路径/协议常量
B->>B : 检查安装状态
B->>CFG : require config.php
B->>B : 定义路径常量(ADMIN/API/MINI等)
B->>B : 读取module.php并序列化
B->>B : 生成DOU_DB_CONFIG
B->>SEC : 后续Init阶段合并安全配置
B->>FIL : 后续Init阶段合并文件配置
B->>SYS : 后续Init阶段合并系统常量
B-->>I : 完成引导
I-->>U : 路由分发并返回响应
详细组件分析
站点配置(config/config.php)
- 数据库连接
- 主机:$dbhost,默认 127.0.0.1
- 库名:$dbname,默认 douphp_dou
- 用户名:$dbuser,默认 root
- 密码:$dbpass,默认 123456
- 表前缀:$prefix,默认 dou_
- 注意:bootstrap 会将上述变量序列化为 DOU_DB_CONFIG,供数据库连接使用。请确保 PHP 已启用 PDO MySQL 扩展,且目标数据库可访问。
- 字符集
- DOU_CHARSET,默认 utf-8
- 注意:需与数据库/表/字段字符集一致,避免中文乱码。
- 系统标识
- SYSTEM_SIGN,默认 company
- 用途:区分站点类型或业务线,便于多站点或多租户场景下的差异化处理。
- 目录定义
- ADMIN_DIR:默认 admin,可通过 storage/state/admin_dir.php 覆盖 $admining 动态设置
- API_DIR:默认 api
- MINIPROGRAM_DIR:默认 miniprogram
- 注意:这些常量会被 bootstrap 用于定义 ADMIN_PATH、API_PATH、MINIPROGRAM_PATH,影响路由与资源路径。
- 管理后台重写
- ADMIN_REWRITE:默认 false
- 注意:开启后需配合 Web 服务器重写规则,否则后台路由可能无法访问。
- 应用密钥
- DOU_APP_KEY:默认提供示例值
- 注意:生产环境务必更换为唯一且足够长度的随机字符串,用于签名/加密等安全场景。
- 调试开关
- DOU_DEBUG:默认 true
- 注意:生产环境建议关闭,以减少敏感信息泄露风险。
安全配置(config/security.php)
- 可信代理 trusted_proxies
- 空数组表示不信任任何代理;部署在反向代理/负载均衡时,填入代理出口 IP/CIDR,以便正确获取客户端真实 IP。
- 可信 Host trusted_hosts
- 空表示不校验;非空时仅允许列表内的域名,防止 Host 头注入污染对外链接。
- 安全响应头 headers
- frame_options/content_type_options/referrer_policy/permissions_policy/hsts
- HSTS 仅在 HTTPS 且 enabled 时下发,max_age 单位为秒,subdomains 控制是否包含子域。
- 限流 throttle
- store 指向 storage/cache/throttle/,default 为 null 表示默认不限流,仅敏感端点受中间件配额保护。
- 会话 session
- httponly=true 防 XSS 窃取 sid;secure=null 跟随 IS_HTTPS;samesite=Lax;use_strict_mode=true 拒绝外部未初始化 sid。
文件与上传(config/file.php)
- 默认驱动 default=local
- 上传默认 upload_defaults
- upload_max_kb=2048(单文件上限)
- allow_extensions 默认不含 svg(SVG 存在存储型 XSS 风险,确需时在对应磁盘显式开启)
- image_quality=100
- thumb_directory 留空表示与原图同目录
- 磁盘 disks
- local 指向 images/upload/
- avatar_admin 继承约定路径 images/avatar_admin/,仅覆盖上传上限
系统常量(config/system.php)
- front_fixed_module:前台固定内建模块(如 index/page/search/captcha/sitemap/llms)
- miniprogram_builtin_module:小程序内置模块(index/page/search)
- reserved_first_segment:前台保留 URL 首段(不可被模块短名占用)
- miniprogram_extra_page:小程序专属页(无业务模块)
- miniprogram_no_handle:不参与小程序 app.json 生成的 single 模块
- nav_hidden_single/admin_hidden_single:不参与导航/后台菜单的 single 模块
依赖关系分析
- 入口与引导
- index.php 依赖 core/bootstrap.php 完成基础常量、路径、安装检查与配置加载
- bootstrap.php 依赖 config/config.php 获取数据库与目录等关键配置,并生成 DOU_DB_CONFIG
- 配置与运行时
- security.php 与 file.php 在 Init 阶段合并入 Config,影响 Request、Session、Storage 等子系统
- system.php 提供框架层固定模块清单,影响路由判定与小程序构建
graph LR
IDX["index.php"] --> BOOT["core/bootstrap.php"]
BOOT --> CFG["config/config.php"]
BOOT --> MOD["config/module.php"]
BOOT --> DB_CFG["DOU_DB_CONFIG"]
INIT["Init阶段"] --> SEC["config/security.php"]
INIT --> FIL["config/file.php"]
INIT --> SYS["config/system.php"]
性能注意事项
- 数据库连接
- 合理设置主机与端口,优先使用本地回环或内网地址以降低延迟
- 确保 PDO 扩展可用,必要时调整 PHP-FPM/MySQL 连接池与超时参数
- 字符集
- 统一使用 utf-8 或 utf8mb4,避免跨端编码不一致导致的性能损耗与错误
- 安全头与会话
- HSTS 仅在 HTTPS 下启用,减少重定向开销
- SameSite 策略根据跨站需求选择,避免不必要的 Cookie 传输
- 文件上传
- 限制最大文件大小与扩展名,降低恶意文件上传风险与存储压力
- 图片质量与缩略图策略按业务权衡,平衡清晰度与带宽
故障排查指南
- 数据库连接失败
- 检查 config/config.php 中的主机、端口、用户名、密码、库名是否正确
- 确认 DOU_DB_CONFIG 已正确生成(由 bootstrap 从 $dbhost/$dbuser/$dbpass/$dbname/$prefix 聚合)
- 验证 PHP 已启用 PDO MySQL 扩展,且防火墙/安全组放行数据库端口
- 若使用代理或云数据库,确认网络可达性与 DNS 解析
- 字符集乱码
- 确认 DOU_CHARSET 与数据库/表/字段字符集一致
- 检查数据库连接建立后的 SET NAMES 是否生效(通常由框架内部处理)
- 路径错误
- 确认 ADMIN_DIR/API_DIR/MINIPROGRAM_DIR 与实际目录一致
- 若修改了后台目录,需在 storage/state/admin_dir.php 中设置 $admining 以覆盖默认值
- 检查 Web 服务器根目录与站点根目录是否匹配
- 安全相关问题
- 反向代理环境下,配置 trusted_proxies 以正确识别客户端 IP
- 配置 trusted_hosts 防止 Host 头注入导致的外部链接污染
- 生产环境关闭 DOU_DEBUG,避免错误堆栈泄露
- 文件上传失败
- 检查 upload_max_kb 与服务器 php.ini 的 upload_max_filesize/post_max_size 限制
- 确认 images/upload/ 目录存在且可写
- 如需 SVG,请在对应磁盘配置中显式允许扩展名
结论
DouPHP 的配置体系以 config/config.php 为核心,结合安全、文件与系统常量配置,通过 bootstrap 在启动早期统一加载并注入到全局上下文。管理员应重点关注数据库连接、字符集、目录定义与应用密钥,并根据环境与部署拓扑调整安全与文件策略。遵循本文提供的配置示例与排查步骤,可快速定位并解决常见问题,保障系统稳定与安全。
附录:生产与开发环境配置示例
以下为两类典型环境的配置要点(以 config/config.php 为主,其他配置按需调整)。请勿直接复制代码,参考以下字段与默认值进行变更。
-
开发环境
- 数据库
- 主机:127.0.0.1
- 库名:douphp_dou
- 用户名:root
- 密码:123456
- 表前缀:dou_
- 字符集:utf-8
- 系统标识:company
- 目录:admin/api/miniprogram
- 管理后台重写:false
- 应用密钥:可使用默认示例值(不建议用于生产)
- 调试开关:true
- 安全
- 可信代理:[]
- 可信 Host:[]
- HSTS:关闭
- 会话 SameSite:Lax
- 文件上传
- 单文件上限:2048 KB
- 允许扩展:jpg,jpeg,gif,png,webp,ico
- 图片质量:100
- 数据库
-
生产环境
- 数据库
- 主机:使用内网或云数据库地址
- 库名:独立命名空间(如 prod_douphp)
- 用户名:专用数据库用户(最小权限)
- 密码:强密码
- 表前缀:可按站点隔离(如 site1_)
- 字符集:utf-8 或 utf8mb4(与数据库一致)
- 系统标识:按业务线区分
- 目录:保持默认或自定义并确保路径一致
- 管理后台重写:根据 Web 服务器能力决定是否启用
- 应用密钥:替换为唯一且足够长度的随机字符串
- 调试开关:false
- 安全
- 可信代理:填写反向代理出口 IP/CIDR
- 可信 Host:填写实际域名与通配子域
- HSTS:开启(HTTPS 环境),合理设置 max_age 与 subdomains
- 会话 SameSite:根据跨站需求选择 Lax/Strict/None
- 文件上传
- 单文件上限:按业务调整(注意与 php.ini 一致)
- 允许扩展:严格限制,谨慎开启 SVG
- 图片质量:按展示需求调整
- 数据库