PTAdmin 是基于 Laravel 的后台管理底座,为项目提供后台认证、权限管理、资源管理和插件运行等基础能力。本文从项目根目录出发,介绍应用代码、依赖组件、配置、网站入口和运行数据分别存放在哪里。

阅读顺序:本文是目录指南的基础篇。了解 PTAdmin 的项目结构后,如果你正在使用 PTCMS 建站,可以继续阅读 PTCMS 目录结构介绍,进一步定位 CMS 插件、页面模板和主题静态资源。

以下路径均相对于包含 artisan 和 composer.json 的项目根目录。目录结构以当前项目为参考,不同版本和安装方式可能存在差异;插件、主题及其资源目录应以实际安装情况为准。

一、先分清项目代码与后台组件

项目代码主要放在 app/、routes/、config/ 等目录,承载当前项目自己的业务与配置。

后台基础组件通过 Composer 安装到 vendor/。PTAdmin 相关组件位于 vendor/ptadmin/,它们与项目代码共同构成完整应用。

插件放在 addons/,用于扩展具体业务。例如,安装 PTCMS 后会出现 addons/Cms/,但 CMS 插件并不是每个 PTAdmin 项目都必须安装的部分。

二、项目根目录一览

下面列出与部署和开发关系最密切的目录。主题、语言资源及其他扩展文件是否存在,取决于项目版本和已安装内容。

项目根目录/
├── app/                 项目应用代码
├── addons/              插件扩展目录
├── bootstrap/           应用启动与引导
│   └── cache/           框架启动缓存
├── config/              项目配置
├── database/            数据库结构与初始化
│   ├── migrations/      数据库迁移
│   └── seeders/         数据填充
├── lang/                语言资源(按版本提供)
├── public/              网站公开访问目录
│   ├── index.php        Web 入口文件
│   └── storage          公开存储链接(配置后)
├── resources/           项目视图等源码资源
├── routes/              项目路由
├── storage/             文件存储与运行数据
│   ├── app/             应用存储文件
│   ├── framework/       框架运行数据
│   └── logs/            日志
├── templates/           前台主题(按项目配置)
├── tests/               自动化测试
├── vendor/              Composer 依赖
│   └── ptadmin/         PTAdmin 相关组件
├── .env                 当前环境配置
├── .env.example         环境配置示例
├── artisan              命令行入口
├── composer.json        依赖声明与自动加载配置
└── composer.lock        依赖版本锁定文件

三、开发功能时关注哪些目录

1. app/:项目自身的应用代码

常见位置包括 app/Http/Controllers/、app/Models/ 和 app/Providers/,分别用于组织控制器、数据模型和服务提供者。项目也可以根据业务需要组织自己的服务层等目录。

扩展项目功能时,应先区分这段逻辑属于当前项目,还是适合封装为可复用插件,再选择放入 app/ 或独立插件中。

2. routes/:请求与功能的连接入口

routes/ 保存项目级路由,例如 web.php 和 api.php。路由决定请求交给哪个控制器或处理逻辑。

插件还可以注册自己的路由,因此某个功能没有出现在项目的 routes/ 中,并不代表它没有对应路由。插件内部的组织方式可参考后续的 PTCMS 目录指南。

3. resources/ 与 templates/:不同用途的视图资源

resources/ 用于项目视图及其他源码资源。采用前台主题机制的项目,还会使用 templates/主题名/ 保存主题模板。

实际页面从哪个位置加载,由项目视图配置和对应功能决定。使用 PTCMS 时,主题模板与静态资源的具体位置见 PTCMS 目录结构介绍中的前台主题说明。

4. vendor/:由 Composer 管理的依赖

当前结构中的 vendor/ptadmin/admin/ 提供后台基础能力,vendor/ptadmin/addon/ 提供插件相关能力,vendor/ptadmin/easy/ 提供资源与数据模型相关能力。实际安装的组件和版本应以项目依赖为准。

日常二次开发优先使用项目代码、插件或主题扩展。直接修改依赖包中的文件,可能在重新安装或升级依赖时被覆盖。

四、配置、数据库与命令行文件

config/ 与 .env

config/ 保存应用、数据库、缓存、文件存储等配置;.env 保存当前环境使用的配置值。.env.example 是环境配置示例,不应当包含真实生产密钥。

部署或迁移网站时,应检查环境配置是否与目标服务器匹配。不要把数据库密码、应用密钥等内容放到公开仓库或公开下载目录。

database/

database/migrations/ 保存数据库结构迁移,database/seeders/ 保存初始化数据逻辑。业务记录保存在数据库中,并不是把文章或用户数据写成文件存入这个目录。

artisan 与 Composer 文件

artisan 是项目命令行入口。执行项目命令前,应先进入包含该文件的根目录,并确认使用了与项目兼容的 PHP 环境。

composer.json 声明依赖、自动加载和脚本,composer.lock 锁定依赖版本。已有锁定文件的项目,部署时通常使用 composer install 安装既定版本,不要把 composer update 当成常规部署步骤。

五、网站入口、上传文件与日志

1. 网站运行目录:public/

Web 服务的公开根目录应指向项目中的 public/。在宝塔面板中,通常先选择项目目录,再将运行目录设置为 /public。

请求通过 public/index.php 进入应用,由框架和路由分配到具体功能。不要把整个项目根目录直接作为公开访问目录;伪静态规则可参考 PTAdmin 伪静态配置文档。

2. 上传文件:storage/app/

使用 Laravel 本地 public 存储盘时,公开文件通常保存到 storage/app/public/,通过 public/storage 符号链接对外访问。例如,storage/app/public/example.jpg 对应访问路径 /storage/example.jpg。

使用对象存储或自定义上传配置时,文件可能不在本地目录,应以后台存储设置和 config/filesystems.php 为准。私有文件和备份不能随意移入公开存储目录。

3. 运行数据:storage/ 与 bootstrap/cache/

storage/logs/ 保存日志;storage/framework/ 保存视图编译、会话或缓存等运行数据,具体取决于配置;bootstrap/cache/ 保存框架生成的启动相关缓存。

这些目录需要正确的写入权限。排查问题时,不要直接删除整个 storage/,其中可能同时包含需要保留的上传文件。

六、按任务快速定位

  • 开发项目业务:先看 app/ 与 routes/。
  • 查后台依赖:看 composer.json、composer.lock 与 vendor/ptadmin/。
  • 安装或开发插件:关注 addons/ 及对应插件的声明文件。
  • 调整环境配置:核对 .env 和 config/。
  • 查网站运行入口:确认 Web 服务指向 public/。
  • 查异常与上传文件:分别检查日志配置、存储驱动和 storage/ 下的对应位置。

接下来阅读:基础目录明确后,进入 PTCMS 目录结构介绍,了解 CMS 插件如何接入这个底座,以及建站时模板、静态资源和文章内容分别在哪里维护。