TP5 多入口文件配置的坑
闲话不多说,TP5(5.0.20) 在配置多入口文件的时候你是否遇到过一下的问题呢?
开发设计的需求吧网站拆分为前台、后台、API 3 个模块,对应的也需要3个入口文件,后台和API入口文件是用PATH_INFO 模式访问(关闭路由)。
在配置后台入口文件的时候,直接从前台入口文件拷贝了主要代码如下
- <?php
- // [ 后台应用入口文件 ]
- // 定义应用目录
- define('APP_PATH', __DIR__ . '/../application/');
- //定义自定义的配置目录
- define('CONF_PATH', __DIR__ . '/../config/');
- //开启调试
- define('APP_DEBUG', true);
- //关闭opcache缓存模块
- ini_set('opcache.revalidate_freq',);
- //绑定admin模块
- define('BIND_MODULE','admin/Index');
- // 加载框架引导文件
- require __DIR__ . '/../thinkphp/start.php';
- //关闭admin模块下的路由,必须写在框架引导文件之后
- \think\App::route(false);
测试一下是否成功,(づ ̄3 ̄)づ╭❤~biubiu! 报错...
我的个×,什么鬼,我绑定了admin 模块了啊,报个index模块不存在,什么意思,牛头不对马嘴啊
经过逐步的排查分析,发现是config 配置文件中配置中开启了路由,但是 admin 入口文件中关闭路由方式不对(查看了官方文档和搜了下其他人所说的,完全没用)。
在5.0系列的入口文件中 加载框架引导文件只有一句代码:
- require __DIR__ . '/../thinkphp/start.php';
问题就出在这 !!!!
要想关闭路由需要把上面的加载代码改为
- require __DIR__ . '/../thinkphp/base.php';// 加载框架基础文件
- // 需要执行的操作
- \think\App::route(false);//关闭路由,必须写在基础框架之后,用于执行之前
- \think\App::run()->send();// 执行应用
这样才能使自定义的配置文件生效。
还发现个问题是在入口文件中定义的一些设置其实根本没生效,如define('APP_DEBUG', true');这个不论改成大小写还是放在入口文件中任意位置,试过之后根本不起作用,必须在配置文件中去设置才能生效。
入口文件中可动态配置常量,但实际有些是不会生效的,需要测试后才能知道(不要一味的照搬)
如果想要模块有不同的设置的话,在 应用目录=》模块目录=》config.php 中进行设置,会覆盖最上层的应用设置的;也可以在自定义的 配置目录config =》模块目录(如admin)=》config.php 中设置。
扩展配置在extra文件夹下,文件名就是配置名称,配置的选项是该扩展配置的二级配置。每个模块都可以设置独立的扩展配置。
如在在自动公共配置目录的extra目录下新建一个myconfig.php文件,写入配置项
- <?php
- return [
- //是否允许用户注册 [off|on]
- 'user_enable_register' => 'on',
- //是否允许用户登录 [off|on]
- 'user_enable_login' => 'on',
- //前台访问key值
- 'index_key' => 'indexkey',
- //后台访问key值
- 'admin_key' => 'dminkey',
- //api文档key值
- 'api_key' => 'apikey',
- ];
生成的二级配置如下
- 'myconfig' =>
- 'user_enable_register' => string 'on'
- 'user_enable_login' => string 'on'
- 'index_key' => string 'indexkey'
- 'admin_key' => string 'adminkey'
- 'api_key' => string 'apikey'
配置优先级,优先级高的设置相同配置会覆盖优先级低的,自定义配置目录下的要优先于应用目录下的配置文件
即:
- config/模块/extra/配置文件 优先级高于 application/模块/extra/配置文件
- config/模块/config.php 优先级高于 application/模块/config.php
- config/config.php 优先级高于 application/config.php
提示:在实际开发中,入口文件设置和配置文件设置要多注意测试,有些问题,需要用不同的方式去测试后才知道是否正确。
TP5 多入口文件配置的坑的更多相关文章
- flutter 入口文件配置路由+加载页面
入口文件配置路由 1.路由信息 -- 加载页面 ,通常用于显示新的内容或者广告,加载完成之后进入主页面 -- 主页面 /app 2.配置页面 main.dart main.dart // main ...
- webpack4 单入口文件配置 多入口文件配置 以及常用的配置
单入口文件配置 webpack.config.js const path = require('path'); const HtmlWebpackPlugin = require('html-webp ...
- tp5更改入口文件到根目录的方法分享
tp5把入口文件放到了public目录中,对于服务器或者vps来说没啥,因为可以指定目录,但是对于虚拟主机就不行了,我们必须吧index.php这入口文件放到根目录,那么我么需要改一下相对的引入文件的 ...
- nginx下TP5 隐藏入口文件+支持pathinfo模式+配置多项目根目录
首先说下项目目录情况 跟目录/usr/share/nginx/html/(别说怎么这么深 0.0) html文件夹下面两个目录 pssh pssh_shop 两个tp5项目分别对应两个二级域名 ...
- Ubuntu下TP5隐藏入口文件
部分内容是复制其他网友的博文,由于过了一段时间,找不到原文地址,再次表示感谢.以下是自己整理的,目的只是以后方便查阅 1.ubuntu或linux下找不到apache服务器配置文件httpd.conf ...
- Think_php入口文件配置
think_php的入口模式有两种方式 1,一个入口文件对应一个项目应用 2,一个入口文件对应所有项目应用 默认情况,入口文件只需要require thinkphp文件夹就可以.比如thinkphp文 ...
- Ubuntu Server 14.04 & Apache2.4 虚拟主机、模块重写、隐藏入口文件配置
环境: Ubuntu Server 14.04 , Apache2.4 一.Apache2.4 虚拟主机配置 01. 新建一份配置文件 在apache2.4中,虚拟主机的目录是通过/etc/apach ...
- tp5.1入口文件隐藏
修改.htaccess文件 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On Re ...
- tp5隐藏入口文件(基于nginx)
location / { try_files $uri $uri/ /index.php?$query_string; #这项配置解决访问根目录以外路径报404的错误 ...
随机推荐
- 如何实现PyQt5与QML响应彼此发送的信号?
对于PyQt5+QML+Python3混合编程,如何实现PyQt5与QML响应彼此发送的信号,这是一个棘手的问题. 大抵有如下五种方式: (要运行下面五个例子,千万不能在eric6中运行,会报错.错误 ...
- CF 258 D. Little Elephant and Broken Sorting
D. Little Elephant and Broken Sorting 链接 题意: 长度为n的序列,m次操作,每次交换两个位置,每次操作的概率为$\frac{1}{2}$,求m此操作后逆序对的期 ...
- spring 各个版本的源码、jar包和源码jar包下载地址
spring各个版本的源码jar包.文档jar包和spring的jar包 http://maven.springframework.org/release/org/springframework/sp ...
- c# table 怎么在前台循环展示 ViewBag
后台 public ActionResult DoctorEvaluation()//前台页面 { HE_Department HE_dt = new HE_Department(); DataTab ...
- Navigation - How to define the structure of the navigation tree via the NavigationItemAttribute
In the meantime, you should use the Model Editor to create such a navigation structure. There are se ...
- 【总结】浅谈ref与out
ref——仅仅是一个地址 (1)当一个方法或函数在使用ref作为参数时,在方法中或函数中对ref参数所做的更改都将反映在该变量中. (2)如果要使用ref参数,则必须将参数作为ref显示传递到方法中. ...
- [WPF]解决模板中ContextMenu绑定CommandParameter的问题
直接上代码,首先是一个ContextMenu的模板: <ContextMenu x:Key="Menu" BorderThickness="0.3" Fo ...
- Window10家庭版启动hyper-v虚拟机组件
在安装docker的时候发现如果直接使用docker for windows,对系统的要求是window10专业版或企业版,家庭版本身没有hyper-v,不能支持 虚拟化.但是后来我在搜索过程中发现, ...
- Python科学测量与计算库Pymeasure: 控制你的仪器进行自动测试和科学计算
Python这种脚本语言因其语法简单,工具包丰富成熟,使用起来非常方便.在很多领域被广泛使用,今天介绍的是python在仪器控制应用领域,python在仪器控制领域相关的书籍可以参考<真实世界的 ...
- day23 正则,re模块
一. 简谈正则表达式 元字符 . 除了换行符外任意字符. \w 数字.字母.下划线 \s 空白符 \b 单词的末尾 \d 数字 \n 匹配换行符 \t 匹配制表符 \W 除了数字. 字母 下划线 \D ...