ThinkPHP6多应用模式配置经验总结

946次阅读
没有评论

1、安装ThinkPHP6

6.0之前安装都是从Git或者直接下载安装包进行安装,从6.0开始安装方式就改成了composer进行安装了,安装命令如下:

稳定版:composer create-project topthink/think tp
开发版:composer create-project topthink/think=6.0.x-dev tp
默认安装完成之后是单应用模式,目录结构如下:

www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─ … 更多类库目录
│ │
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件

├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置

├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ …

├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写

├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
单应用模式很简单,直接使用就可以了,我们现在需要的是多应用模式,多应用模式和单应用模式区别就在app目录结构,下面我们来一步一步实现。

2、配置多应用模式

    安装多应用模式扩展think-multi-app

composer require topthink/think-multi-app
删除app目录下的controller文件夹,TP是根据是否有这个文件夹来判断单应用模式还是多应用模式的,所以这个必须删除。
删除完成之后使用命令创建的 ,比如要创建admin和api两个应用
php think build admin
php think build api
这里有一个坑,很多人会遇到这种情况

[InvalidArgumentException]
Command “build” is not defined.
提示“build”命令没有定义,这个坑折腾了我近一个小时,之前的think是提供的有默认build命令的,现在不知道为啥没有了,需要手工去配置进去,最终的解决办法就是修改config/console.php,添加build命令

return [
// 指令定义
‘commands’ => [
‘build’ => \think\app\command\Build::class,
],
];
再次执行build命令就会提示success成功了。这个时候项目目录结构大概如下

www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─admin
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─ … 更多类库目录
│ │ │
│ │ ├─common.php 公共函数文件
│ │ └─event.php 事件定义文件
│ │
│ ├─api
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─ … 更多类库目录
│ │ │
│ │ ├─common.php 公共函数文件
│ │ └─event.php 事件定义文件
│ │
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置

├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ …

├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写

├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件

接下来就是测试多应用模式,理论上输入www.xxxxx.com/index.php/admin应该是会调起admin应用下的Index/index方法的,但是并没有,又一个坑出现了,这个也是大坑!

还是按照单应用模式去执行了,网上的说法很多,有说是在config/app.php下加入’auto_multi_app’ => true,有说要配置app_map=>[‘admin’=>’admin’,’api’=>’api’],也有说配置domain_bind=>[‘admin’=>’admin’,’api’=>’api’],但是这些统统都被我验证失败了,芭比Q了。
搜索的过程中突然,一个新的方法出现在我的眼前,不管行不行,必须得试试,也没其他办法了,果然是一个大神,接下来就是这问大神的方法。

说的是服务没有自动注册成功,操作步骤如下:
打开vendor/composer/installed.json,查找“services” 关键字,我这边查到两条

“services”: [
“think\app\Service”
]
“services”: [
“think\trace\Service”
],
把搜索到的所有值写入vendor/services.php文件,内容如下

<?php

declare (strict_types = 1);
return array (
0 => ‘think\app\Service’,
1 => ‘think\trace\Service’,
);
再次执行www.xxxxx.com/index.php/admin

您好!这是一个[admin]示例应用
再次执行www.xxxxx.com/index.php/api

您好!这是一个[api]示例应用
至此多应用模式已经配置完毕了。

可能有人会感觉执行的url地址里都带一个index.php太烦人,不想带它能不能去掉,肯定是可以的,修改public/.htaccess文件为如下

Options +FollowSymlinks -Multiviews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^(.)$ index.php/$1 [QSA,PT,L] RewriteRule ^(.)$ index.php [L,E=PATH_INFO:$1]

执行地址即可简化为www.xxxxx.com/admin,跟www.xxxxx.com/index.php/admin是一样的结果。

有人可能又有疑问了,现在都是用的二级域名比较多,

www.xxxxx.com/admin能不能简化为admin.xxxx.com

www.xxxxx.com/api能不能简化为api.xxxx.com

答案毋庸置疑,肯定是能的,这个时候就用到了前面说的domain_bind=>[‘admin’=>’admin’,’api’=>’api’]了,这个是域名绑定的,可以是二级域名前缀,也可以是全域名。

app_map这个没用,这个是应用的映射,跟这个二级域名没有关系。

好了,所有的需求都得到了解决,分享给有同样问题的小伙伴们,有不对的地方希望指正,谢谢。

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2025 年 4 月
 123456
78910111213
14151617181920
21222324252627
282930  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
反超Nano Banana!OpenAI旗舰图像生成模型上线

反超Nano Banana!OpenAI旗舰图像生成模型上线

反超Nano Banana!OpenAI旗舰图像生成模型上线 Jay 2025-12-17 10:25:43 ...
“昆山杯”第二十七届清华大学创业大赛决赛举行

“昆山杯”第二十七届清华大学创业大赛决赛举行

“昆山杯”第二十七届清华大学创业大赛决赛举行 一水 2025-12-22 17:04:24 来源:量子位 本届...
企业级智能体落地,谁没踩这四种大坑?无问芯穹的系统性解法来了

企业级智能体落地,谁没踩这四种大坑?无问芯穹的系统性解法来了

企业级智能体落地,谁没踩这四种大坑?无问芯穹的系统性解法来了 衡宇 2025-12-16 20:10:53 来...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
小米语音首席科学家:AI发展的本质就像生物进化,不开源要慢1000倍 | MEET2026

小米语音首席科学家:AI发展的本质就像生物进化,不开源要慢1000倍 | MEET2026

小米语音首席科学家:AI发展的本质就像生物进化,不开源要慢1000倍 | MEET2026 克雷西 2025-...
顶尖技术+标准产品+创新模式+可靠服务,打造大模型商业落地中国范式

顶尖技术+标准产品+创新模式+可靠服务,打造大模型商业落地中国范式

顶尖技术+标准产品+创新模式+可靠服务,打造大模型商业落地中国范式 思邈 2025-12-16 10:24:0...
PPIO姚欣:AI正在进入自主行动与创造时代,智能体需要全新的操作系统|MEET2026

PPIO姚欣:AI正在进入自主行动与创造时代,智能体需要全新的操作系统|MEET2026

PPIO姚欣:AI正在进入自主行动与创造时代,智能体需要全新的操作系统|MEET2026 梦瑶 2025-12...
Dexmal原力灵机提出ManiAgent,用多智能体协作重构机器人操控

Dexmal原力灵机提出ManiAgent,用多智能体协作重构机器人操控

Dexmal原力灵机提出ManiAgent,用多智能体协作重构机器人操控 量子位的朋友们 2025-12-16...
推特吵架吵出篇论文!谢赛宁团队新作iREPA只要3行代码

推特吵架吵出篇论文!谢赛宁团队新作iREPA只要3行代码

推特吵架吵出篇论文!谢赛宁团队新作iREPA只要3行代码 henry 2025-12-16 15:03:31 ...