目录结构
每个目录负责什么,哪些能改、哪些别动、哪些必须放在网站根目录外。
整体布局
站点根目录/ ← 只有 wwwroot 里的东西能被浏览器访问
├── wwwroot/ 网站根目录(对外可见)
│ ├── index.php 唯一入口
│ ├── install.php 安装程序(装完删除)
│ ├── static/ CSS / JS / 图标
│ └── uploads/ 上传的图片与附件
├── core/ 内核:路由、模板引擎、数据层、权限、授权
├── app/ 控制器:前台与后台
├── templates/ 模板主题
│ ├── default/ 正式站主题
│ ├── demo/ 演示站主题
│ └── admin/ 后台主题
├── config/ config.php(含密钥,勿外泄)
├── data/ 数据库文件、备份、更新包
├── storage/ 模板编译缓存
└── docs/ 开发手册与本文件
为什么把内核和网站根目录分开
传统做法是把所有 PHP 文件都放在网站目录下,靠 .htaccess 或 Nginx 规则去拦。这套系统不这么做,原因很直接:
- 拦截规则写错一次就是源码泄露,而文件根本不在网站目录里则不存在拦截失败的可能
- 不依赖任何 Web 服务器配置,换环境不用重新调规则
- 数据库、配置、备份文件自然也都在安全区
可以放心改的
| 目录 | 说明 |
|---|---|
templates/ | 自己写主题就放这里,随便改 |
wwwroot/static/ | 样式与脚本,改完刷新即可 |
docs/ | 文档内容源 |
不建议手改的
| 目录 | 原因 |
|---|---|
core/ | 内核。在线更新会按白名单覆盖,本地改动会被冲掉 |
storage/ | 模板编译缓存,删掉会自动重建,改它没有意义 |
data/ | 数据库与备份。要动请先备份 |
主题放在哪都行:模板可以放在
templates/,也可以放在站点根目录之外 ——
PHP 的访问范围已经包含上级目录,不需要为了「能不能读到」而把文件挪进网站目录。