解决thinkphp5不能给某模块单独设置调试模式
解决tp5无法单独设置某个模块开启或关闭DEBUG
关闭thinkphp5的追踪模式(右下角的图标)
由于项目开发涉及调用API,所以需要在实际环境中制作与调试。那么现在网站前台已经完成,域名可能会有用户访问,为了防止被图谋不轨的人利用了DEBUG信息,需要对网站前台模块禁用DEBUG模式和追踪模式,后台还在开发需要开启DEBUG模式和追踪模式。可是thinkphp5只能配置全局的调试模式,在文件/application/config.php中配置参数app_debug和app_trace,那么就只好自己动手改了(本着一个思想就是不能动thinkphp5核心文件)。
示例目录结构(这是在官方文档中复制过来的,增加了admin模块):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ├─index 模块目录(可更改) │ │ ├─config.php 模块配置文件 │ │ ├─common.php 模块函数文件 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ ├─config.php 模块私有配置文件 │ │ └─ ... 更多类库目录 │ ├─admin 模块目录(可更改) │ │ ├─config.php 模块配置文件 │ │ ├─common.php 模块函数文件 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ ├─config.php 模块私有配置文件 │ │ └─ ... 更多类库目录 │ ├─command.php 命令行工具配置文件 │ ├─common.php 应用公共(函数)文件 │ ├─config.php 应用(公共)配置文件 │ ├─database.php 数据库配置文件 │ ├─tags.php 应用行为扩展定义文件 │ └─route.php 路由配置文件 ├─extend 扩展类库目录(可定义) ├─public WEB 部署目录(对外访问目录) │ ├─static 静态资源存放目录(css,js,image) │ ├─index.php 应用入口文件 │ ├─router.php 快速测试文件 │ └─.htaccess 用于 apache 的重写 ├─runtime 应用的运行时目录(可写,可设置) ├─vendor 第三方类库目录(Composer) ├─thinkphp 框架系统目录 │ ├─lang 语言包目录 │ ├─library 框架核心类库目录 │ │ ├─think Think 类库包目录 │ │ └─traits 系统 Traits 目录 │ ├─tpl 系统模板目录 │ ├─.htaccess 用于 apache 的重写 │ ├─.travis.yml CI 定义文件 │ ├─base.php 基础定义文件 │ ├─composer.json composer 定义文件 │ ├─console.php 控制台入口文件 │ ├─convention.php 惯例配置文件 │ ├─helper.php 助手函数文件(可选) │ ├─LICENSE.txt 授权说明文件 │ ├─phpunit.xml 单元测试配置文件 │ ├─README.md README 文件 │ └─start.php 框架引导文件 ├─build.php 自动生成定义文件(参考) ├─composer.json composer 定义文件 ├─LICENSE.txt 授权说明文件 ├─README.md README 文件 ├─think 命令行入口文件 |
前提:没有做伪静态,如果做了伪静态就要根据URL中的字符来区别对待了
目标:index模块关闭调试模式,admin模块开启调试模式。
修改文件:/application/config.php
修改方法:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$module = \think\Request::instance()->url(); // 获取访问URL $debugArr = ['admin']; // 开启调试模式的模块名,如果做了伪静态则要根据URL来区别对待了 $isDebug = false; // 默认为关闭调试模式 $i = count($debugArr); while($i){ $i--; if(strpos($module, $debugArr[$i]) !== false){ $isDebug = true; break; } } return [ // +---------------------------------------------------------------------- // | 应用设置 // +---------------------------------------------------------------------- ...... // 应用调试模式 'app_debug' => $isDebug, // 应用Trace 'app_trace' => $isDebug, ...... ]; |
完美解决。