安装
从官网下载放入需要使用的网站位置。然后输入测试域名即可,比如localhost
目录结构
整体目录:
www WEB部署目录(或者子目录)
├─index.php 入口文件
├─README.md README文件
├─Application 应用目录
├─Public 资源文件目录
└─ThinkPHP 框架目录
其中,ThinkPHP目录:
├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
│ ├─Common 核心公共函数目录
│ ├─Conf 核心配置目录
│ ├─Lang 核心语言包目录
│ ├─Library 框架类库目录
│ │ ├─Think 核心Think类库包目录
│ │ ├─Behavior 行为类库目录
│ │ ├─Org Org类库包目录
│ │ ├─Vendor 第三方类库目录
│ │ ├─ ... 更多类库目录
│ ├─Mode 框架应用模式目录
│ ├─Tpl 系统模板目录
│ ├─LICENSE.txt 框架授权协议文件
│ ├─logo.png 框架LOGO文件
│ ├─README.txt 框架README文件
│ └─ThinkPHP.php 框架入口文件
自动生成
可以生成前台模块和后台模块,分别用于前台站点管理和后台站点管理。方法如下:
1、在入口文件index.php
同级目录中新建admin.php
文件;
2、把index.php
文件的内容复制到admin.php
。
3、将admin.php中的:define('BIND_MODULE','Home');
改为:define('BIND_MODULE','Admin');
(新版的可能会没有define('BIND_MODULE','Home');
,所以可以直接在admin.php中直接添加define('BIND_MODULE','Admin');
即可);
4、在浏览器中输入:localhost/admin.php。回车然后刷新目录列表,就会在application中生成了一个admin模块。
首页目录
首页目录位于:application–>Home->Controller->IndexController.class.php里
严格来说,我们的访问地址为:localhost/index.php/Home/Index/index
即:Home模块下的Index控制器下的index方法
自建控制器:
比如在Home下的Controller下建一个名为:UserController.class.php
的文件
内容为:
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller{
public function index(){
echo 'User_test';
}
}
访问的方式为:test.test.com/index.php/Home/User/index
配置
禁止访问模块
有些模块我们希望禁止被用户访问,比如:Common和Runtime模块,当然,框架在默认就禁止访问了。
当强行访问的时候回提示:“无法加载Common”的错误信息。
手动禁止,需要在应用(这里是App)下找到Common下的Conf下的config.php
, 这是一个配置文件。
//禁止访问模块
'MODULE_DENY_LIST' => array('Common','Runtime'),
有个问题需要注意:会出现No input file specified.
解决方法:
.htaccess文件中的
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
在默认情况下会导致No input file specified.
修改成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
问题解决。
允许访问模块
//注意要写全
'MODULE_ALLOW_LIST' =>array('Home','Admin'),
只允许访问Home模块:
'MODULE_ALLOW_LIST' =>array('Home'),
如果有多个访问模块,那在默认URL访问的时候,应该有一个首选访问,默认是Home,想设置Admin为默认,可以这样:
'DEFAULT_MODULE => 'Admin',
URL模式
pathinfo模式
默认采用pathinfo模式,也推荐使用pathinfo模式。
比如在Home模块的控制器下新建一个控制器类UserController.class.php
:
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller{
public function index($user,$pass){
echo 'user:'.$user,'<br/>pass:'.$pass;
}
}
则在浏览器输入:
http://test.test.com/index.php/Home/User/index/user/gabby/pass/huang
则会输出:
user:gabby
pass:huang
设置键值对分隔符
在配置文件里设置
'URL_PATHINFO_DEPR' =>'_',
则浏览器需要这样输入:
http://test.test.com/index.php/Home_User_index_user_gabby_pass_huang
普通模式
则浏览器需要这样输入:
http://test.test.com/index.php?m=Home&c=User&a=index&user=gabby&pass=huang
m是模块,c是控制器,a是方法,接下来就是键值对了。
REWRITE重写模式(重要)
1、打开apache,找到httpd.conf配置文件中的mod_rewrite.so
模块,去除#号开启。
2、找到AllowOverride None
将None
改为All
。
然后,在浏览器输入:
test.test.com/Home/Index/index/
即可正常访问!
这里需要注意,如果提示:No input file specified.
那需要在.htaccess文件把
IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
设置成:
IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>