这里写一写TP6下配置多应用。TP6默认是单应用模式(单模块),而我们实际项目中往往是多应用的(多个模块),所以在利用TP6是就需要进行配置,开启多应用模式。
1、安装ThinkPHP6
1.1安装ThinkPHP6.0框架
从6.0开始安装方式就改成了composer进行安装了,进入到WEB根目录,打开CMD,在命令终端中输入下面的命令,
composer create-project topthink/think tp921
单应用模式很简单,直接使用就可以了,我们现在需要的是多应用模式,多应用模式和单应用模式区别就在app目录结构,下面我们来一步一步实现。
1.2安装think-view扩展
新版框架默认只能支持PHP原生模板,如果需要使用think Template模板引擎,需要安装think-view扩展(扩展会自动安装think Template依赖库)
使用composer安装think-view扩展,进入到项目根目录,打开CMD,在命令终端中输入下面的命令
composer require topthink/think-view
如果不安装扩展,使用在控制器使用 “return view()” 时,会报错。
2、配置多应用模式
2.1安装多应用模式扩展think-multi-app
使用composer安装多应用模式扩展think-multi-app,进入到项目根目录,打开CMD,在命令终端中输入下面的命令
composer require topthink/think-multi-app
2.2删除app目录下的文件
安装完成后,删除项目的中app目录下的controller文件夹,TP是根据是否有这个文件夹来判断单应用模式还是多应用模式的,所以这个必须删除
2.3创建应用项目
删除完成之后使用命令来快速创建多应用(进入到项目根目录,打开CMD,在命令终端中输入下面的命令),这里我创建了两个应用,index和admin
php think build index
php think build admin
php think build api
2.4修改config/app.php文件
修改配置文件开启多应用模式,在config/app.php文件下增加以下内容(如果没有 auto_multi_app 这个配置项,则手动加入进去,并将其值设置为true.)
// 开启自动多模式
'auto_multi_app' => true,
至此多应用模式已经配置完毕了,这样一个简单的多应用开发模式就完成了
3、测试并且访问多应用
访问不同应用下的控制器的方法:http://域名/index.php/应用名称/控制器/方法名
直接访问域名 或 访问域名下index.php,这时访问为index应用
访问admin应用,需要指定admin.php入口文件 或者admin应用
>>>>>>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 默认的多应用访问规则是 localhost:端口号/index.php/应用名称/控制器/控制方法
4、其他配置
4.1配置默认应用
修改config/app.php,修改以下配置,没有的话就直接新添加【根据自己需求设置】
// 是否启用路由
'with_route' => true,
// 默认应用
'default_app' => 'api',
// 默认时区
'default_timezone' => 'Asia/Shanghai',
4.2配置域名绑定
在config\app.php中进行配置域名绑定。这里需要注意的是,不要出现含有大写文字的域名,有可能会导致访问不到,通过域名来访问页面(不同域名访问不同的应用),默认域名直接匹配的就是index控制器的index方法
// index应用地址
$domainBind = Config::get('app.domain_bind');
if ($domainBind) {
$domainBindKey = array_search('index', $domainBind);
$domainBindKey = $domainBindKey == '*' ? 'www.' : ($domainBindKey ? $domainBindKey . '.' : '');
$indexUrl = Request::scheme() . '://' . $domainBindKey . Request::rootDomain() . '/';
}
View::assign(['indexUrl' => $indexUrl ?? '/']);
有人可能又有疑问了,现在都是用的二级域名比较多,
www.xxxxx.com/admin能不能简化为admin.xxxx.com
www.xxxxx.com/api能不能简化为api.xxxx.com
答案毋庸置疑,肯定是能的,这个时候就用到了域名绑定,可以是二级域名前缀,也可以是全域名。app_map这个没用,这个是应用的映射,跟这个二级域名没有关系。
4.3配置环境变量
在项目文件夹下有一个“.example.env”环境变量示例文件,这个文件是示例文件,不是正式使用的文件,所以如果需要修改环境变量的话,可以复制“.example.env”,命名为".evn"文件,修改里面配置 主要这几项
配置网站域名 并同步hosts
配置到项目public目录下
配置小皮,不同域名访问不同的应用
配置到项目public目录下
注意:保存public/.htaccess文件中的重写规则,小皮面板设置网站后容易给置空