thinkphp3.2 常量配置在哪

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp3.2 常量配置在哪相关的知识,希望对你有一定的参考价值。

参考技术A 惯例配置
应用设定
'APP_USE_NAMESPACE'     =>  true,    // 应用类库是否使用命名空间 3.2.1新增
'APP_SUB_DOMAIN_DEPLOY' =>  false,   // 是否开启子域名部署
'APP_SUB_DOMAIN_RULES'  =>  array(), // 子域名部署规则
'APP_DOMAIN_SUFFIX'     =>  '', // 域名后缀 如果是com.cn net.cn 之类的后缀必须设置    
'ACTION_SUFFIX'         =>  '', // 操作方法后缀
'MULTI_MODULE'          =>  true, // 是否允许多模块 如果为false 则必须设置 DEFAULT_MODULE
'MODULE_DENY_LIST'      =>  array('Common','Runtime'), // 禁止访问的模块列表
'MODULE_ALLOW_LIST'     =>  array(),    // 允许访问的模块列表
'CONTROLLER_LEVEL'      =>  1,
'APP_AUTOLOAD_LAYER'    =>  'Controller,Model', // 自动加载的应用类库层(针对非命名空间定义类库) 3.2.1新增
'APP_AUTOLOAD_PATH'     =>  '', // 自动加载的路径(针对非命名空间定义类库) 3.2.1新增
默认设定
'DEFAULT_M_LAYER'       =>  'Model', // 默认的模型层名称
'DEFAULT_C_LAYER'       =>  'Controller', // 默认的控制器层名称
'DEFAULT_V_LAYER'       =>  'View', // 默认的视图层名称
'DEFAULT_LANG'          =>  'zh-cn', // 默认语言
'DEFAULT_THEME'         =>  '', // 默认模板主题名称
'DEFAULT_MODULE'        =>  'Home',  // 默认模块
'DEFAULT_CONTROLLER'    =>  'Index', // 默认控制器名称
'DEFAULT_ACTION'        =>  'index', // 默认操作名称
'DEFAULT_CHARSET'       =>  'utf-8', // 默认输出编码
'DEFAULT_TIMEZONE'      =>  'PRC',  // 默认时区
'DEFAULT_AJAX_RETURN'   =>  'JSON',  // 默认AJAX 数据返回格式,可选JSON XML ...
'DEFAULT_JSONP_HANDLER' =>  'jsonpReturn', // 默认JSONP格式返回的处理方法
'DEFAULT_FILTER'        =>  'htmlspecialchars', // 默认参数过滤方法 用于I函数...
Cookie设置
'COOKIE_EXPIRE'         =>  0,    // Cookie有效期
'COOKIE_DOMAIN'         =>  '',      // Cookie有效域名
'COOKIE_PATH'           =>  '/',     // Cookie路径
'COOKIE_PREFIX'         =>  '',      // Cookie前缀 避免冲突
'COOKIE_HTTPONLY'       =>  '',     // Cookie的httponly属性 3.2.2新增
数据库设置
'DB_TYPE'               =>  '',     // 数据库类型
'DB_HOST'               =>  '', // 服务器地址
'DB_NAME'               =>  '',          // 数据库名
'DB_USER'               =>  '',      // 用户名
'DB_PWD'                =>  '',          // 密码
'DB_PORT'               =>  '',        // 端口
'DB_PREFIX'             =>  '',    // 数据库表前缀
'DB_FIELDTYPE_CHECK'    =>  false,       // 是否进行字段类型检查 3.2.3版本废弃
'DB_FIELDS_CACHE'       =>  true,        // 启用字段缓存
'DB_CHARSET'            =>  'utf8',      // 数据库编码默认采用utf8
'DB_DEPLOY_TYPE'        =>  0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'DB_RW_SEPARATE'        =>  false,       // 数据库读写是否分离 主从式有效
'DB_MASTER_NUM'         =>  1, // 读写分离后 主服务器数量
'DB_SLAVE_NO'           =>  '', // 指定从服务器序号
'DB_SQL_BUILD_CACHE'    =>  false, // 数据库查询的SQL创建缓存 3.2.3版本废弃
'DB_SQL_BUILD_QUEUE'    =>  'file',   // SQL缓存队列的缓存方式 支持 file xcache和apc 3.2.3版本废弃
'DB_SQL_BUILD_LENGTH'   =>  20, // SQL缓存的队列长度 3.2.3版本废弃
'DB_SQL_LOG'            =>  false, // SQL执行日志记录 3.2.3版本废弃
'DB_BIND_PARAM'         =>  false, // 数据库写入数据自动参数绑定
'DB_DEBUG'              =>  false,  // 数据库调试模式 3.2.3新增 
'DB_LITE'               =>  false,  // 数据库Lite模式 3.2.3新增 
数据缓存设置
'DATA_CACHE_TIME'       =>  0,      // 数据缓存有效期 0表示永久缓存
'DATA_CACHE_COMPRESS'   =>  false,   // 数据缓存是否压缩缓存
'DATA_CACHE_CHECK'      =>  false,   // 数据缓存是否校验缓存
'DATA_CACHE_PREFIX'     =>  '',     // 缓存前缀
'DATA_CACHE_TYPE'       =>  'File',  // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
'DATA_CACHE_PATH'       =>  TEMP_PATH,// 缓存路径设置 (仅对File方式缓存有效)
'DATA_CACHE_SUBDIR'     =>  false,    // 使用子目录缓存 (自动根据缓存标识的哈希创建子目录)
'DATA_PATH_LEVEL'       =>  1,        // 子目录缓存级别
错误设置
'ERROR_MESSAGE'         =>  '页面错误!请稍后再试~',//错误显示信息,非调试模式有效
'ERROR_PAGE'            =>  '', // 错误定向页面
'SHOW_ERROR_MSG'        =>  false,    // 显示错误信息
'TRACE_MAX_RECORD'      =>  100,    // 每个级别的错误信息 最大记录数
日志设置
'LOG_RECORD'            =>  false,   // 默认不记录日志
'LOG_TYPE'              =>  'File', // 日志记录类型 默认为文件方式
'LOG_LEVEL'             =>  'EMERG,ALERT,CRIT,ERR',// 允许记录的日志级别
'LOG_EXCEPTION_RECORD'  =>  false,    // 是否记录异常信息日志
SESSION设置
'SESSION_AUTO_START'    =>  true,    // 是否自动开启Session
'SESSION_OPTIONS'       =>  array(), // session 配置数组 支持type name id path expire domain 等参数
'SESSION_TYPE'          =>  '', // session hander类型 默认无需设置 除非扩展了session hander驱动
'SESSION_PREFIX'        =>  '', // session 前缀
模板引擎设置
'TMPL_CONTENT_TYPE'     =>  'text/html', // 默认模板输出类型
'TMPL_ACTION_ERROR'     =>  THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认错误跳转对应的模板文件
'TMPL_ACTION_SUCCESS'   =>  THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认成功跳转对应的模板文件
'TMPL_EXCEPTION_FILE'   =>  THINK_PATH.'Tpl/think_exception.tpl',// 异常页面的模板文件
'TMPL_DETECT_THEME'     =>  false,       // 自动侦测模板主题
'TMPL_TEMPLATE_SUFFIX'  =>  '.html',     // 默认模板文件后缀
'TMPL_FILE_DEPR'        =>  '/', //模板文件CONTROLLER_NAME与ACTION_NAME之间的分割符
'TMPL_ENGINE_TYPE'      =>  'Think',     // 默认模板引擎 以下设置仅对使用Think模板引擎有效
'TMPL_CACHFILE_SUFFIX'  =>  '.php',      // 默认模板缓存后缀
'TMPL_DENY_FUNC_LIST'   =>  'echo,exit',    // 模板引擎禁用函数
'TMPL_DENY_PHP'         =>  false, // 默认模板引擎是否禁用PHP原生代码
'TMPL_L_DELIM'          =>  '',            // 模板引擎普通标签开始标记
'TMPL_R_DELIM'          =>  '',            // 模板引擎普通标签结束标记
'TMPL_VAR_IDENTIFY'     =>  'array',     // 模板变量识别。留空自动判断,参数为'obj'则表示对象
'TMPL_STRIP_SPACE'      =>  true,       // 是否去除模板文件里面的html空格与换行
'TMPL_CACHE_ON'         =>  true,        // 是否开启模板编译缓存,设为false则每次都会重新编译
'TMPL_CACHE_PREFIX'     =>  '',         // 模板缓存前缀标识,可以动态改变
'TMPL_CACHE_TIME'       =>  0,         // 模板缓存有效期 0 为永久,(以数字为值,单位:秒)
'TMPL_LAYOUT_ITEM'      =>  '__CONTENT__', // 布局模板的内容替换标识
'LAYOUT_ON'             =>  false, // 是否启用布局
'LAYOUT_NAME'           =>  'layout', // 当前布局名称 默认为layout
URL设置
'URL_CASE_INSENSITIVE'  =>  true,   // 默认false 表示URL区分大小写 true则表示不区分大小写
'URL_MODEL'             =>  1,       // URL访问模式,可选参数0、1、2、3,代表以下四种模式:
// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式)  默认为PATHINFO 模式
'URL_PATHINFO_DEPR'     =>  '/',    // PATHINFO模式下,各参数之间的分割符号
'URL_PATHINFO_FETCH'    =>  'ORIG_PATH_INFO,REDIRECT_PATH_INFO,REDIRECT_URL', // 用于兼容判断PATH_INFO 参数的SERVER替代变量列表
'URL_REQUEST_URI'       =>  'REQUEST_URI', // 获取当前页面地址的系统变量 默认为REQUEST_URI
'URL_HTML_SUFFIX'       =>  'html',  // URL伪静态后缀设置
'URL_DENY_SUFFIX'       =>  'ico|png|gif|jpg', // URL禁止访问的后缀设置
'URL_PARAMS_BIND'       =>  true, // URL变量绑定到Action方法参数
'URL_PARAMS_BIND_TYPE'  =>  0, // URL变量绑定的类型 0 按变量名绑定 1 按变量顺序绑定
'URL_404_REDIRECT'      =>  '', // 404 跳转页面 部署模式有效
'URL_ROUTER_ON'         =>  false,   // 是否开启URL路由
'URL_ROUTE_RULES'       =>  array(), // 默认路由规则 针对模块
'URL_MAP_RULES'         =>  array(), // URL映射定义规则
系统变量名称设置
'VAR_MODULE'            =>  'm',     // 默认模块获取变量
'VAR_CONTROLLER'        =>  'c',    // 默认控制器获取变量
'VAR_ACTION'            =>  'a',    // 默认操作获取变量
'VAR_AJAX_SUBMIT'       =>  'ajax',  // 默认的AJAX提交变量
'VAR_JSONP_HANDLER'     =>  'callback',
'VAR_PATHINFO'          =>  's',    // 兼容模式PATHINFO获取变量例如 ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_DEPR
'VAR_TEMPLATE'          =>  't',    // 默认模板切换变量
'VAR_ADDON'             =>  'addon',    // 默认的插件控制器命名空间变量 3.2.2新增
其他设置
'HTTP_CACHE_CONTROL'    =>  'private',  // 网页缓存控制
'CHECK_APP_DIR'         =>  true,       // 是否检查应用目录是否创建
'FILE_UPLOAD_TYPE'      =>  'Local',    // 文件上传方式
'DATA_CRYPT_TYPE'       =>  'Think',    // 数据加密方式

参考技术B config.php

Thinkphp5 常量设置问题

楼主是之前使用了thinkphp3.2快两年了,很早就听说过thinkphp的版本已经到达5了。

不过鉴于早期的版本尚未完善,并没有立即开始学*。最*做一个项目,尝试一下新的知识。

但是在使用的时候,的确不是很方便。文档方面是一个硬伤,不过是开源的,没有什么好吐槽的。

在尝试自定义一些常量的时候,遇到了一些问题。

像3.2版本的,直接就在整个项目下的index.php下面用define去定义一些常量,然后就可以在代码中直接使用。

这次走了旧路,直接在整个项目下找到一个类似3.2版本index定义的think文件。代码如下:

1 // 定义项目路径
2 define(\'APP_PATH\', __DIR__ . \'/application/\');
3 
4 // 加载框架引导文件
5 require __DIR__.\'/thinkphp/console.php\';

在此处,我需要定义上传的常量:

故修改代码为:

1 // 定义项目路径
2 define(\'APP_PATH\', __DIR__ . \'/application/\');
3 // 定义上传路径
4 define(\'UPLOAD_PATH\', __DIR__.\'/public/uploads/\');
5 // 加载框架引导文件
6 require __DIR__.\'/thinkphp/console.php\';

但是在寻找的时候却出现错误:

Use of undefined constant UPLOAD_PATH - assumed \'UPLOAD_PATH\'

奇怪的就是你可以输入APP_PATH,并且按住control+鼠标左击,其实是能到达你定义的这个常量的。

我看了一下官方的文档,并没有涉及这方面的讲解,至于收费文档里面有没有就不清出了。毕竟也没购买~~

然后我就看是追踪一下访问的路径,发现前面是访问了public下的,明显,入口文件不是think。

于是我在public目录下找到了正确的入口文件indexphp:

1 // [ 应用入口文件 ]
2 
3 // 定义应用目录
4 define(\'APP_PATH\', __DIR__ . \'/../application/\');
5 
6 // 加载框架引导文件
7 require __DIR__ . \'/../thinkphp/start.php\';

和think.php有相同的地方。但是上面明显标有应用入口文件说明。

然后思路就清晰了!此处提供三种方法定义:

 

方法一:

在应用入口文件定义常量

在public/indexphp处将UPLOAD_PATH定义。定义后文件代码为:

1 // [ 应用入口文件 ]
2 
3 // 定义应用目录
4 define(\'APP_PATH\', __DIR__ . \'/../application/\');
5 // 定义上传目录
6 define(\'UPLOAD_PATH\', __DIR__.\'/public/uploads\');
7 
8 // 加载框架引导文件
9 require __DIR__ . \'/../thinkphp/start.php\';

则可访问UPLOAD_PATH常量(dump(UPLOAD_PATH))。

 

方法二:

定义一个自己的常量定义文件,例如:

在extend目录下建立const.php文件,在里面输入:

1 //自定义常量
2 //上传目录
3 define(\'UPLOAD_PATH\', __DIR__.\'/../public/uploads\');

然后再在入口文件内,引入该文件:

1 // [ 应用入口文件 ]
2 
3 // 定义应用目录
4 define(\'APP_PATH\', __DIR__ . \'/../application/\');
5 //方法二:
6 //引入自定义常量文件
7 require __DIR__ . \'/../extend\'. \'/const.php\';
8 // 加载框架引导文件
9 require __DIR__ . \'/../thinkphp/start.php\';

即可访问到该常量的定义。

 

方法三:

跟踪一下APP_PATH的定义:

发现在三处有定义(工具下的项目有点多~~当前为:documentary):

分别是:public/index.php

thinkphp/base.php

tnink

此时,可以在base.php下找到定义常来的代码。并插入UPLOAD_PATH的定义,即可访问。

不过这种方法并不提倡,因为修改了核心的代码。更新之类的话,自找麻烦了。

 

以上是关于thinkphp3.2 常量配置在哪的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP3.2.3整合smarty模板

thinkPHP3.2.3源码分析

ThinkPH5 SQL注入(Mysql 聚合函数)

thinkphp3.2自动生成模块BIND_MODULE

ThinkPHP3.2.3版本里面关于行为参数定义的位置在哪个文件夹有声明?

thinkphp3.2 无法加载模块