PHPCMS V9 是国内主流的 PHP 内容管理系统,采用 MVC 架构 + 单一入口模式,整体目录结构清晰、模块化强。以下是完整的目录结构、目录作用、核心文件代码作用的详细文档,适用于二次开发、系统维护与架构理解。
一、根目录结构与作用
1. 核心目录
| 目录名 | 作用 | 核心说明 |
|---|---|---|
| api/ | 对外接口目录 | 存放系统对外提供的 API 接口文件(如数据接口、第三方对接接口),支持跨系统调用 |
| caches/ | 系统缓存主目录 | 存储所有缓存数据(模板缓存、数据库缓存、配置缓存、权限缓存),提升系统响应速度 |
| phpcms/ | 框架核心主目录 | 系统最核心目录,包含所有框架类库、模块、模型、函数、语言包 |
| phpsso_server/ | 单点登录服务目录 | 独立的 SSO 单点登录系统,实现跨站、跨应用用户统一登录与身份验证 |
| statics/ | 静态资源目录 | 存放系统公共 CSS、JS、图片、插件等静态文件,前后台共用 |
| uploadfile/ | 用户上传附件目录 | 存储后台/前台上传的图片、文档、视频等所有附件文件 |
2. 根目录核心文件
| 文件名 | 代码作用 | 执行流程 |
|---|---|---|
| index.php | 前台单一入口文件 | 系统初始化 → 加载 base.php → 路由解析(m=模块/c=控制器/a=方法)→ 执行业务 → 渲染模板 |
| admin.php | 后台单一入口文件 | 后台登录验证 → 权限校验 → 加载后台模块 → 渲染后台模板 |
| crossdomain.xml | Flash 跨域配置文件 | 控制 Flash 跨域访问权限,解决前端 Flash 上传跨域问题 |
| robots.txt | 搜索引擎爬虫规则 | 限制搜索引擎抓取范围,保护后台、敏感目录不被收录 |
| favicon.ico | 网站图标文件 | 浏览器标签栏、收藏夹显示的网站小图标 |
二、核心目录深度解析
(一)caches/ 缓存目录(核心缓存存储)
caches/
├─ configs/ # 系统配置文件(数据库、系统、路由、站点)
│ ├─ database.php # 数据库连接配置(主从库、字符集、账号密码)
│ ├─ system.php # 系统全局配置(网站名、附件路径、SEO、水印)
│ ├─ route.php # URL 路由规则配置(伪静态、自定义路由)
│ └─ sites.php # 站群配置(多站点域名、目录、参数)
├─ cache/ # 系统运行缓存(模板编译、SQL 结果、栏目缓存)
├─ block/ # 碎片缓存(后台自定义碎片、广告缓存)
├─ model/ # 数据模型缓存(字段结构、表结构缓存)
└─ template/ # 模板编译缓存(HTML 模板编译为 PHP 执行文件)
(二)phpcms/ 框架核心目录(最关键)
1. phpcms/libs/ 系统类库目录(底层核心)
libs/
├─ classes/ # 系统核心基类(所有模块继承的基础类)
│ ├─ mysql.class.php # 数据库操作类(CURD、事务、查询构建)
│ ├─ template.class.php # 模板引擎类(编译、渲染、变量分配)
│ ├─ param.class.php # 参数解析类(GET/POST/COOKIE 过滤、安全校验)
│ ├─ upload.class.php # 文件上传类(附件上传、格式校验、水印)
│ └─ http.class.php # HTTP 请求类(CURL、接口调用、跨域)
├─ functions/ # 全局函数库(系统通用工具函数)
│ ├─ global.func.php # 核心全局函数(字符串、数组、时间、加密)
│ └─ extention.func.php # 扩展函数(自定义、第三方兼容函数)
└─ helpers/ # 辅助类库(工具类、插件类)
2. phpcms/model/ 数据模型目录
- 作用:数据库表映射模型,每个模型对应一张数据表,封装所有数据操作
- 结构:
模型名_model.class.php(如content_model.class.php) - 核心代码:
class content_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'content'; // 对应数据表
parent::__construct();
}
// 自定义数据方法(列表、详情、添加、修改)
}
3. phpcms/modules/ 业务模块目录(MVC 核心)
模块化架构:每个子目录 = 1 个独立功能模块(content、member、admin、comment 等)
标准模块结构:
modules/
├─ content/ # 内容模块(文章、栏目、模型管理,核心模块)
│ ├─ controllers/ # 控制器(处理请求、业务逻辑、调用模型)
│ │ └─ index.php # 默认控制器(首页、列表、内容页)
│ ├─ models/ # 模块模型(当前模块专属数据操作)
│ ├─ templates/ # 后台模板(模块后台页面)
│ ├─ classes/ # 模块自定义类
│ └─ functions/ # 模块专属函数
├─ member/ # 会员模块(注册、登录、个人中心)
├─ admin/ # 后台管理模块(权限、菜单、系统设置)
└─ ... 其他模块
控制器核心代码(index.php):
defined('IN_PHPCMS') or exit('No permission resources.');
class index {
public function __construct() {
$this->db = pc_base::load_model('content_model'); // 加载模型
}
// 列表页方法(URL:?m=content&c=index&a=lists)
public function lists() {
$catid = $_GET['catid'];
$data = $this->db->lists($catid); // 调用模型获取数据
include template('content', 'list'); // 加载前台模板
}
}
4. phpcms/templates/ 前台模板目录
templates/
└─ default/ # 默认模板风格(可新建多风格:mobile、blue 等)
├─ content/ # 内容模块模板(首页、列表、内容、栏目)
│ ├─ index.html # 首页模板
│ ├─ list.html # 列表页模板
│ └─ show.html # 内容详情页模板
├─ member/ # 会员模块模板
├─ header.html # 公共头部
└─ footer.html # 公共底部
5. phpcms/languages/ 语言包目录
- 作用:多语言支持,存放系统前台/后台语言文件
- 结构:
zh-cn/(中文)、en/(英文),文件:system.lang.php、admin.lang.php
6. phpcms/base.php 框架引导文件(核心)
- 作用:系统初始化入口,定义全局常量、自动加载类、加载配置、初始化环境
- 核心代码:
defined('PHPCMS_PATH') or define('PHPCMS_PATH', dirname(__FILE__).'/');
defined('IN_PHPCMS') or define('IN_PHPCMS', true);
// 加载配置、函数、类库自动加载
pc_base::load_config();
pc_base::load_sys_func('global');
spl_autoload_register(array('pc_base', 'autoload'));
(三)statics/ 静态资源目录
statics/
├─ css/ # 系统公共样式(后台、前台基础 CSS)
├─ js/ # 系统公共 JS(jQuery、插件、表单验证)
├─ images/ # 系统公共图片(图标、按钮、背景)
└─ plugins/ # 第三方插件(编辑器、上传组件、图表)
(四)uploadfile/ 附件目录
- 按日期归档:
/2026/04/存储当月上传附件 - 包含图片、文档、视频、压缩包等所有用户上传文件
三、系统执行流程(单一入口)
- 用户请求 → 访问
index.php(前台)或admin.php(后台) - 初始化 → 加载
phpcms/base.php,定义常量、加载配置、自动加载类 - 路由解析 → 解析 URL 参数
m=模块/c=控制器/a=方法 - 业务处理 → 实例化控制器 → 调用模型操作数据库 → 处理数据
- 模板渲染 → 加载对应模板文件 → 分配变量 → 输出 HTML 页面
四、二次开发常用路径与函数
1. 常用路径常量
PHPCMS_PATH:系统根目录CSS_PATH:静态 CSS 路径(/statics/css/)JS_PATH:静态 JS 路径(/statics/js/)UPLOAD_URL:附件访问 URLTPL_PATH:模板路径
2. 常用加载函数
- 加载系统类:
pc_base::load_sys_class('类名') - 加载模型:
pc_base::load_model('模型名') - 加载函数:
pc_base::load_sys_func('函数名') - 加载模板:
include template('模块','模板名')
五、安全与维护注意事项
- caches/configs/:数据库、系统配置文件,禁止外网直接访问
- uploadfile/:需设置上传权限(755),禁止执行 PHP(防止木马)
- phpcms/:核心代码目录,仅后台可写,前台只读
- statics/:静态资源可 CDN 加速,提升访问速度