ThinkPHP 配置详解
3.0 ThinkPHP配置详解
3.1 入口文件的配置
一般不建议在入口文件做过多的配置,但可以重新定义一些系统常量,以下简单介绍几个常用的系统常量。
1.APP_PATH
默认情况下,框架的项目应用目录为 \Application。如果需要改变应用目录就需要在入口文件中更改APP_PATH常量定义,如例3-1所示,
例3-1
<?php
// 应用入口文件 // 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 定义应用目录
define('APP_PATH','./Apps/'); // 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
在例3-1中,第10行代码,将应用的目录更改为了Apps。不过需要注意的是,APP_PATH的定义支持相对路径和绝对路径,但必须以“/”结束。
2.APP_DEBUG
APP_DEBUC是对调试的设置,当设置为true的时候表示开启调试模式,当设置为false的时候表示关闭调试模式,而在默认情况下APP DEBUG为开启状态。
接下来我们通过举例演示一下调试模式在开发中的作用。如例3-2所示。
例3-2
<?php // 应用入口文件 // 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 定义应用目录
define('APP_PATH','./Application/'); // 开启调试模式 建议开发阶段开启,部署阶段注释或者设为false
define('APP_DEBUG',True); // 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
此时打开浏览器,访问一个并不存在的方法,例如http:\\www.tp.com\index.php\Admin\Login\ThisFunction.就会提示一个友好的错误信息,会把错误描述的更急具体。如图3-1所示。

图3-1
从图3-1中,开发者能够清晰地看到错误原因是不存在 ThisFunction 这个方法。而如果将调试模式关闭,则仅会提示页面错误,如图3-2所示。

图3-2
建议开发阶段开启,部署阶段注释或者设为false,因为APP_PATH会暴露一部分程序内部的信息。
3.2 配置文件的配置
在我的上篇博客 ThinkPHP 目录结构 中提到,不建议在ThinkPHP核心目录中修改配置 本小节我们来研究下怎么修改这些配置。
1. 确定配置文件所在位置
通过之前的学习可以知道,ThnkPHP框架有多个配置文件目录,那么配置信息究竟要放到在哪个目录下的配置文件中呢?要解决这个问题就需要了解ThinkPHP的配置加载机制。在ThinkPHP中,应用的配置文件息是自动加载的,
其中主要配置文件的加载顺序是: 惯例配置 一> 应用配置 一> 调试配置 一> 模块配置
由于后面的配置会覆盖之前的同名配置的,所以配置的优先级从右到左依次递减。
相有关配置的说明如下:
(1)惯例配置
框架内置有一个惯例配置文件( ThnkPHP\Conf\convention.php). 按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件。往往只需要配置与惯例配置不同的或者新增的配置参数,如果完全采用默认配置。甚至可以不需要定义任何配置文件。
(2)应用配置
应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(Appic toiCocacoeCooficonfig.php )。
(3)调试配置
如果开启调试模式,则会自动加载框架的调试配置文件( ThinkPHPNConfdebugpbp)和应用调试配置文件( ApplicationlCommonlConfdebugpbp).
(4)模块配置
每个模块会自动加载自己的配置文件( Aplication当前模块名\Conf\config.php).
此时我们或许有一个疑问:既然惯例配置能够为 \Application 下的所有模块提供公共配置,那么干脆就将所有配置信息都放到该文件中好了。
为什么还要有其他配置文件,这不是多此一举吗?
其实ThntPHP框架之所以采用这种设计,是为了投高项目配置灵话性。使不同的极块可以极据各自需求进行不同的配置。
2.配置文件名及配置格式
ThinkPHP框架中的配置文件需要有特定的文件名信息均可以在confg.php中进行配置。
ThinkPHP的配置文件使用标准的关联数组,通过键值对的方式改变配资信息,一个简单的config.php配置文件代码格式如例3-3所示
例3-3
<?php
return array(
'配置项1'=>'配置值1', '配置项1'=>'配置值1', '配置项1'=>'配置值1', ......
);
3.常用配置
对ThinkPHP框架的配置文件有所了解之后,我们再来看几个常用的配置。
(1)默认访问设置
默认情况下,访问ThinkPHP下的入口文件index.php时,总是会访问到Home模块下的Index控制器的Index的操作。
它是在惯例配置文件中默认定义的,我们根据需要对其进行适当的修改。
修改代码如下所示
<?php
return array(
'DEFAULT_MODULE' =>'Admin', //设置默认模块 'DEFAULT_CONTROLLER' =>'Login', //设置默认控制器名称 'DEFAULT_ACTION' =>'CheckLogin', //设置默认操作名称
);
(2)设置数据库的连接信息
数据库的配置我们同样可以在配置惯例中找到,而直接在惯例配置中修改显然会降低框架的灵活性,所以我们可以将用到的配置项,从惯例文件中复制到我们的应用文件配置文件里(我这里是 \Applicaton\Common\Conf\config.php)
这样一来,整应用文件夹的应用都可以使用这个数据库配置。其内容如例3-5所示
例3-5
<?php
return array(
//'配置项'=>'配置值'
//SHOW_PAGE_TRACE => true,
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => '127.0.0.1', // 服务器地址
'DB_NAME' => 'z_0705tp', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => '3306', // 端口
'DB_PREFIX' => 'tp_' // 数据库表前缀
);
(3)URL访问模式配置
所谓的URL访问模式,指的是以哪种形式的URL地址访问网站。
ThinkPHP支持的URL模式有四种如下表所示
| URL模式 | URL_MODEL设置 | 示例 |
| 普通模式 | 0 | http://localhost/index.php?m=home&c=Admin&a=login |
| PATHINFO(路径信息)模式 | 1 | http://localhost/index.php/home/Admin/login |
| REWRITE (加工编写) 模式 | 2 | http://localhost/home/Admin/login |
| 兼容模式 | 3 | http://localhost/index.php?s=/home/Admin/login |
①普通模式:普通模式也就是传统的GET传参方式来指定当前访问的模块和操作,例如: http://localhost/index.php?m=home&c=Admin&a=login 其中m参数表示模块,c参数表示控制器、a参数表示操作。
②PATHINFO模式: PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持。系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境对应上面的URL模式。
③REWRITE模式: REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的人口文件index.php. 但是需要额外配置Web服务器的重写规则。
④兼容模式:兼容模式是用于不支持PATHINFO的特殊环境。
URL访问模式的意又在于:可以让网站中的所有链接有一个统-的格式 。
配置方法也是先参照惯例配置文件 根据需求将配置格式复制到应用文件夹下的配置文件
<?php
return array{
'URL_MODEL' => 0 // 设置URL模式为普通模式
}
ThinkPHP 配置详解的更多相关文章
- ThinkPHP函数详解:session方法
ThinkPHP函数详解:session方法 Session方法用于Session 设置.获取.删除和管理操作. Session 用于Session 设置.获取.删除和管理操作 用法 sessi ...
- Log4j配置详解(转)
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- logback配置详解3<filter>
logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...
- logback配置详解2<appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- log4j.properties配置详解
1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
随机推荐
- Http权威指南(cookie以及web认证机制)
其实对于cookie,想必大家都不陌生,cookie目前主要用于客户端的识别技术. 说到客户端识别技术,就不得不说一个登录态的问题了.登录态顾名思义,用于验证用户的登录与否. 1.登录态 对于PC端网 ...
- Recorder︱深度学习小数据集表现、优化(Active Learning)、标注集网络获取
一.深度学习在小数据集的表现 深度学习在小数据集情况下获得好效果,可以从两个角度去解决: 1.降低偏差,图像平移等操作 2.降低方差,dropout.随机梯度下降 先来看看深度学习在小数据集上表现的具 ...
- 我也说说Emacs吧(7) - lisp基础
lisp基础 Lisp是仅次于Fortran的第二古老的著名计算机语言. Lisp从一开始就与众不同的一点在于,它是基于S-表达式的语言.也就是说,代码和数据是用同一种方式表达出来的. S-表达式,我 ...
- rest-framework框架 -- 认证权限流程源码
认证权限 解析BaseAuthentication源码 # 做认证权限 from rest_framework import exceptions from ..models import * cla ...
- VirtualBox 挂载共享目录
/********************************************************************** * VirtualBox 挂载共享目录 * 说明: * ...
- java 实现共享锁和排它锁
一直对多线程有恐惧,在实现共享锁和排它锁之后,感觉好了很多. 共享锁 就是查询的时候,如果没有修改,可以支持多线程查询: 排它锁 就是修改的时候,锁定共享锁,停止查询,同时,锁定排它锁,只 ...
- windows上安装Gradle并配置环境变量
安装Gradle 下载Gradle,然后配置运行环境就可以了,有一点要注意的是gradle使用的是Groovy语言,而这个语言依赖于java,因此你必须安装配置java环境. 首先下载gradle,我 ...
- jenkins for mac
Mac环境中Jenkins的停止和启动命令启动sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist停止sudo launchc ...
- Epub格式的电子书——文件组成
epub格式电子书遵循IDPF推出的OCF规范,OCF规范遵循ZIP压缩技术,即epub电子书本身就是一个ZIP文件,我们将epub格式电子书的后缀.epub修改为.zip后,可以通过解压缩软件(例如 ...
- matplotlib ----- 颜色, 标记样式
颜色: 蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k' 白色 - 'w' 线: 直线 - '-' 虚线 - '--' 点线 ...