thinkphp多应用模式下新模块需满足:app/下全小写目录(如admin)、含controller子目录、app_multi=true、app_express=false、模块名加入app_allow白名单,并清空runtime/app/缓存。

ThinkPHP 多应用模式下,新模块不是“创建”出来的,而是通过目录结构和配置自动识别的——漏掉 app.php 配置或命名不规范,模块就根本不会被加载。
模块目录必须放在 app/ 下且命名全小写
多应用模式下,每个模块对应 app/ 目录下的一个子目录,比如要加个后台管理模块,就得建 app/admin,不能叫 app/Admin 或 app/AdminModule。Windows 下可能暂时不报错,但 Linux 服务器会直接 404——因为 ThinkPHP 的应用解析器默认只认全小写字母 + 数字 + 下划线的目录名。
-
app/下新建目录必须全小写,如:admin、api、install - 目录内至少包含一个
controller子目录(哪怕为空) - 不要手动在
route/或config/里提前“注册”模块,它靠自动扫描
app.php 里必须显式启用该模块
即使目录建对了,如果 config/app.php 的 app_express 为 false(默认值),或者 app_multi 没设为 true,框架压根不会进入多应用识别流程。更关键的是:新模块名必须出现在 app_allow 白名单里,否则会被静默忽略。
WebmengWeb企业管理系统也简称“WebmengWeb”,是由创梦公司历时3年开发一款以电脑版+微信站+APP+手机版+PAD网站的多语言网站全方组合的营销型企业网站管理系统。WebmengWeb以PHP5+MYSQL做为技术基础进行开发,采用OOP(面向对象)方式进行基础运行框架搭建。模块化开发方式做为功能开发形式,框架易于功能扩展,代码维护,优秀的二次开发能力,可满足所有网站的应用需求。
- 确认
app_multi=>true - 确认
app_express=>false(设为true会跳过模块检测) - 把模块名加入
app_allow数组,例如:['home', 'admin', 'api'] - 改完配置后清空
runtime/app/缓存,否则旧缓存可能卡住识别
访问路径格式固定,不能自定义路由前缀
模块名就是 URL 第一段,没有配置入口。比如 app/admin 对应访问 /admin/,app/api 对应 /api/。想改成 /v1/ 或 /backend/?不行——那是路由层的事,不是模块层。强行在 route/app.php 里绑定 admin 到 v1,会导致控制器解析失败,报错 ClassNotFoundException。
立即学习“PHP免费学习笔记(深入)”;
- URL 路径 = 模块目录名,大小写严格一致
- 模块内控制器方法访问路径是
/模块名/控制器/操作,例如:/admin/index/index - 不要试图用
Route::domain()或Route::group()把模块“挂”到其他路径下,模块和路由是两套机制
最容易被忽略的是:模块目录建好、配置写对之后,没清缓存就反复刷新页面,结果一直提示“应用不存在”。其实框架早识别到了,只是 runtime 里缓存的 app list 还是旧的——删掉 runtime/app/ 整个目录比试来试去快得多。










