简介
本文件为 DouPHP 的环境要求文档,聚焦于服务器环境、PHP 版本、数据库、Web 服务器配置、必需的 PHP 扩展、文件权限以及不同操作系统下的环境检查方法。内容基于仓库中的引导程序、配置文件与伪静态规则进行归纳,确保部署时具备可操作性和可验证性。
项目结构与环境相关位置
- 应用根目录包含入口文件、路由与控制器、模板与资源等;运行时数据与缓存位于 storage 目录。
- 站点配置集中在 config 目录,数据库连接信息在 config/config.php。
- Web 服务器重写规则由根目录 .htaccess 提供(Apache),同时后台设置会提示 IIS/Nginx 的对应重写文件。
- 引导阶段在 core/bootstrap.php 中完成 PHP 版本检测、路径常量定义、未安装跳转、配置加载与自动加载器注册。
graph TB
A["Web 服务器<br/>Apache/Nginx/IIS"] --> B[".htaccess / Nginx 重写 / IIS web.config"]
B --> C["入口 index.php"]
C --> D["core/bootstrap.php<br/>版本检测/路径/配置加载"]
D --> E["config/config.php<br/>数据库/字符集/开关"]
D --> F["storage/<br/>install.lock/缓存/日志"]
核心组件与环境依赖
- PHP 版本:最低要求为 5.6.0 或更高(引导阶段强制校验)。
- 数据库:MySQL 或兼容 MySQL 协议的数据库(PDO/MySQLi 驱动均可);通过 PDO 或原生扩展建立连接。
- Web 服务器:支持 Apache(启用 mod_rewrite)、Nginx(URL 重写)、IIS(URL Rewrite 模块)。
- PHP 扩展(必需/推荐):
- PDO 与 pdo_mysql(或 mysqli)用于数据库访问。
- CURL 用于外部接口调用(支付、短信、云服务等)。
- MBString 用于多字节字符串处理(国际化与编码转换)。
- GD 或 Imagick 用于图片处理(缩略图、验证码等)。
- ZipArchive 用于打包/解压(导出、备份、主题包等)。
- OpenSSL(HTTPS 与证书校验,支付回调与远程 HTTPS 请求)。
- JSON(内置于现代 PHP,但需确保开启)。
- 字符集:默认 UTF-8(由配置常量定义)。
架构总览
DouPHP 的请求流程从 Web 服务器进入,经重写规则统一转发到入口脚本,再由 bootstrap 完成环境检测与初始化,随后加载配置并进入路由分发。存储目录用于安装锁、缓存与日志等运行时数据。
sequenceDiagram
participant Client as "客户端"
participant Web as "Web 服务器"
participant Entry as "入口 index.php"
participant Boot as "core/bootstrap.php"
participant Config as "config/config.php"
participant Storage as "storage/"
participant Router as "路由/控制器"
Client->>Web : HTTP 请求
Web->>Entry : 根据重写规则转发
Entry->>Boot : 执行引导
Boot->>Boot : 检测 PHP 版本
Boot->>Storage : 检查 install.lock
alt 未安装
Boot-->>Client : 重定向至安装页面
else 已安装
Boot->>Config : 加载数据库与系统常量
Boot->>Router : 注册自动加载/路由/请求对象
Router-->>Client : 返回响应
end
详细组件分析
PHP 版本与引导初始化
- 引导阶段对 PHP 版本进行严格比较,低于 5.6.0 将直接终止执行。
- 定义应用根路径、配置目录与存储目录,并在未安装时重定向到安装入口。
- 加载站点配置,定义数据库连接参数与系统常量,随后注册自动加载与门面。
flowchart TD
Start(["启动"]) --> CheckVer["检查 PHP 版本 >= 5.6.0"]
CheckVer --> |不满足| Stop["终止并提示升级"]
CheckVer --> |满足| DefinePaths["定义 ROOT_PATH/CONFIG_PATH/STORAGE_PATH"]
DefinePaths --> CheckInstall{"是否存在 install.lock"}
CheckInstall --> |否| Redirect["重定向到安装入口"]
CheckInstall --> |是| LoadConfig["加载 config/config.php"]
LoadConfig --> Register["注册自动加载/门面/容器"]
Register --> End(["继续路由调度"])
数据库与驱动
- 数据库主机、库名、用户名、密码与表前缀在 config/config.php 中配置。
- 驱动层支持多种适配器(PDO/MySQLi/SQLite/PostgreSQL 等),本项目主要使用 MySQL 系列驱动。
- 生产环境建议使用 PDO + pdo_mysql 以获得更好的稳定性与特性支持。
classDiagram
class 数据库配置 {
+host
+name
+user
+pass
+prefix
}
class 驱动适配 {
+pdo_mysql
+mysqli
+sqlite
+pgsql
}
数据库配置 --> 驱动适配 : "选择连接方式"
Web 服务器与 URL 重写
- Apache:启用 mod_rewrite,根目录 .htaccess 定义了 API、后台与前台的重写规则,并透传 Authorization 头。
- Nginx:需在 server 块中实现等价重写(将 /api/、/admin/、其余路由转发到 index.php)。
- IIS:后台设置会根据 SERVER_SOFTWARE 判断并使用 web.config 或 httpd.ini。
flowchart TD
Req["HTTP 请求"] --> Detect{"匹配规则"}
Detect --> |/api/*| ApiRewrite["转发到 api/index.php?route=..."]
Detect --> |/admin/*| AdminRewrite["转发到 admin/index.php?route=..."]
Detect --> |其他| FrontRewrite["转发到 index.php?route=..."]
ApiRewrite --> Resp["返回响应"]
AdminRewrite --> Resp
FrontRewrite --> Resp
文件权限与存储目录
- storage 目录用于安装锁、缓存、日志、备份等运行时数据,必须对 Web 进程用户可读写。
- 安装完成后会在 storage 下生成 install.lock 以标记已安装状态。
- 配置文件(如 config/config.php)在安装过程中可能被写入,需保证可写权限;安装完成后建议限制为只读以提升安全性。
flowchart TD
Start(["部署后"]) --> SetPerm["设置 storage 目录可读写"]
SetPerm --> Install{"是否首次安装"}
Install --> |是| WriteLock["写入 install.lock"]
Install --> |否| Run["正常运行"]
WriteLock --> Run
Run --> LockCfg["可选:锁定配置文件为只读"]
必需的 PHP 扩展与功能
- PDO/pdo_mysql:数据库连接与查询。
- CURL:远程 HTTP 请求(支付、短信、云服务),部分 SDK 明确使用 curl_init/curl_setopt。
- MBString:多字节字符串处理(国际化、编码转换)。
- GD/Imagick:图像处理(缩略图、验证码、上传裁剪)。
- ZipArchive:压缩/解压(导出、备份、主题包)。
- OpenSSL:HTTPS 与证书校验(支付回调、安全通信)。
依赖关系分析
- 引导程序依赖 PHP 版本与文件系统(storage/config)。
- 配置层依赖数据库连接参数与系统常量。
- 路由与控制器依赖 Web 服务器的重写规则与 PHP 扩展(CURL、GD、Zip 等)。
- 插件与 SDK 依赖特定扩展(如 CURL、OpenSSL)以实现支付与外部服务集成。
graph LR
PHP["PHP 运行时"] --> Bootstrap["引导程序"]
FS["文件系统"] --> Bootstrap
Bootstrap --> Config["配置层"]
Config --> DB["数据库"]
Bootstrap --> Router["路由/控制器"]
Router --> Ext["PHP 扩展<br/>CURL/GD/Zip/OpenSSL"]
Router --> Plugins["插件/SDK"]
性能与运行建议
- 使用 PHP-FPM/Apache 工作模式并合理配置进程数与内存上限。
- 开启 OPcache 提升 PHP 执行效率。
- 数据库层面启用连接池与慢查询日志,优化索引与查询。
- 静态资源(JS/CSS/图片)交由 Web 服务器缓存与 CDN 加速。
- 关闭调试模式(DOU_DEBUG)在生产环境以减少额外开销。
故障排查指南
- 无法进入安装界面:检查 storage 目录是否可写,确认未存在 install.lock;若误删导致重复安装,请清理缓存与数据库。
- 路由 404:确认 Web 服务器重写规则已生效(Apache 的 .htaccess、Nginx 的 rewrite、IIS 的 URL Rewrite)。
- 数据库连接失败:核对 config/config.php 中的 host/name/user/pass/prefix;确认 PDO/pdo_mysql 或 mysqli 已启用。
- 外部接口调用失败:检查 CURL 与 OpenSSL 扩展;确认代理与证书路径配置正确。
- 图片处理异常:确认 GD/Imagick 扩展已启用;检查临时目录权限。
- 权限问题:确保 storage 目录可读写;配置文件安装后可设为只读。
结论
DouPHP 的运行依赖于明确的 PHP 版本、数据库驱动、Web 服务器重写规则与若干关键 PHP 扩展。通过遵循本文的环境要求与检查清单,可确保安装与部署过程顺畅,并在生产环境中获得稳定与安全的运行表现。
附录:安装检查清单
- PHP 版本:≥ 5.6.0(引导阶段强制校验)。
- 数据库:MySQL(或兼容 MySQL 协议),启用 PDO 与 pdo_mysql(或 mysqli)。
- Web 服务器:
- Apache:启用 mod_rewrite,根目录 .htaccess 有效。
- Nginx:配置等价重写规则(/api/、/admin/、其余路由转发到 index.php)。
- IIS:启用 URL Rewrite,使用 web.config 或 httpd.ini。
- PHP 扩展:
- PDO/pdo_mysql(或 mysqli)
- CURL
- MBString
- GD 或 Imagick
- ZipArchive
- OpenSSL
- 文件权限:
- storage 目录:可读写(安装后保留缓存/日志写入能力)。
- 配置文件:安装时可写,安装后建议只读。
- 安装标志:
- 首次安装成功后会在 storage 下生成 install.lock。