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的错误 ...
随机推荐
- iOS开发-通过正则表达式进行各种判断银行卡,车牌号,邮箱地址,QQ,身份证,全字母,仅输入字母或数字同时包含大小写字母和数字,仅能输入中文等
/* * 验证银行卡号是否正确 * 车牌号验证 * 检验邮箱地址是否正确 * 手机号中间四位密文显示 * 判断QQ号是否正确(5-11位) * 判断身份证号是否正确(如末位为字母请用“x” ...
- P2154 [SDOI2009]虔诚的墓主人
略有一点点思维的题. 首先,如果一个点上,下,左,右分别有\(a,b,c,d\)棵树,那这个点的十字架方案为\(C_{a}^{k}C_{b}^{k}C_{c}^{k}C_{d}^{k}\). 按x坐标 ...
- java spring 等启动项目时的异常 或 程序异常的解决思路
今天搭建ssm项目的时候,因为pagehelper的一个jar包没有导入idea的web项目下的lib目录中,异常报错找不到pagehelper,这个问题在出异常的时候疯狂crash,让人心情十分不舒 ...
- Zabbix实战-简易教程--订阅类
一.需求提出 最近数据中心有一个新的需求,有一批后台任务需要在每天固定时间点运行(凌晨8:00),现在希望能够把这个任务执行的结果定时上报给他. 说明:执行的任务为一个sql查询,查询出来的是每个任务 ...
- EF6.0 code first感触
随着EF技术的更新现在已经到了EF7.0时代,追随着技术的大潮去不断更新迭代自己,让自己知道自己还没有被技术抛弃. 今天看了下EF 6.0 codefist技术,简单,对于传统的DAL层省去了大量的人 ...
- CAN总线的显性电平为什么能覆盖隐性电平?
摘要:在CAN总线中,显性电平是强驱动,隐性电平时弱驱动,因此当有的节点发送显性电平有的节点发送隐性电平时,总线上呈现的肯定是强驱动的状态,这就是CAN总线显性电平可以覆盖隐性电平的原因. 大家都知道 ...
- Error! Failed to install react, react-dom, next, try again.
问题:用create-next-app创建应用报错,部分模块没有安装,react.react-dom.next等模块安装失败,如下图所示 操作环境: 系统:Ubuntu 16.04.4 LTS npm ...
- 17-使用公共 Registry
Docker Hub 是 Docker 公司维护的公共 Registry.用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中.如果不希望别人访问自己的镜像,也可以购买私 ...
- Shader Variants 打包遇到的问题
1. 遇到的问题 最常见的是打包到手机后效果与PC上不一致,具体情况比如: 光照贴图失效 雾失效 透明或者cutoff失效 以上首先需要检查的地方是Shader变体的编译设置 2. 超级着色器编译成N ...
- 我的第一个上线小程序,案例实战篇二——LayaAir游戏开始界面开发
不知不觉我的第一个小程序已经上线一周了,uv也稳定的上升着. 很多人说我的小程序没啥用,我默默一笑,心里说:“它一直敦促我学习,敦促我进步”.我的以一个小程序初衷是经验分享,目前先把经验分享到博客园, ...