Thinkphp 3.1 项目开发的部署方式

近期工作中接触到了公司的一个旧项目,使用ThinkPHP 3.1版本开发的,现对ThinkPHP 3.1 开发中项目部署中应用到的开发方式进行总结。

ThinkPHP(官网http://www.thinkphp.cn/down.html) 目前的最新版是5.0.10,而我们以3.1.3版本作为示例。
下载ThinkPHP 3.1.3 框架包解压后文件结构:

├─ Common 框架公共文件目录
├─ Conf 框架配置文件目录
├─ Extend 框架扩展目录
├─ Lang 框架系统语言目录
├─ Lib 系统核心基类库目录
│ ├─ Behavior 内置行为类库
│ ├─ Core 核心类库包
│ ├─ Driver 内置驱动类库包
│ │ ├─ Cache 内置缓存驱动
│ │ ├─ Db 内置数据库驱动
│ │ ├─ TagLib 内置标签驱动
│ ├─ Template 内置模板引擎驱动
├─ Tpl 系统模板目录
├─ ThinkPHP.php 框架入口文件

新建项目入口文件index.php

<?php
require './ThinkPHP/ThinkPHP.php';

在浏览器中访问项目,页面显示:

项目初始化.png

此时项目目录 app下文件发生了变化,除了入口文件 index.php 和框架包,其他都是自动生成的:

项目文件目录.png

各个文件夹作用:

├─ Common 项目公共文件目录
├─ Conf 项目配置目录
├─ Lang 项目语言包目录
├─ Lib 项目类库目录
│ ├─ Action Action 类库目录
│ ├─ Behavior 行为类库目录
│ ├─ Model 模型类库目录
│ ├─ Widget Widget类库目录
├─ Runtime 项目运行时目录
│ ├─ Cache 模板缓存目录
│ ├─ Data 数据缓存目录
│ ├─ Logs 日志文件目录
│ ├─ Temp 临时缓存目录
├─ ThinkPHP 框架目录
├─ Tpl 项目模板目录
├─ index.php 项目入口文件

这种方式的入口文件 index.php 是存在项目目录之内。也可以入口文件移动到 app 目录的外面,修改入口文件 index.php :

<?php
//定义项目名称
define('APP_NAME', 'Application');
// 定义项目路径
define('APP_PATH', './Application/');
//加载框架入口文件
require './ThinkPHP/ThinkPHP.php';

目录结构:

文件夹项目.png

项目部署方式分为两种,一种是应用部署,每一个项目对应一个入口文件,例如前台入口文件对应 index.php,后台入口文件对应 admin.php,这种项目部署是ThinkPHP推荐的方式;

多入口设计.png

前台入口文件:

<?php
define('APP_NAME', 'Home');

define('APP_PATH', './Home/');

require './ThinkPHP/ThinkPHP.php';

后台入口文件:

<?php
define('APP_NAME', 'Admin');

define('APP_PATH', './Admin/');

require './ThinkPHP/ThinkPHP.php';

另一种是模块分组部署是把所有的应用对应到一个入口文件,项目的模板文件还是放到项目的Tpl目录下面,只是将外部调用的资源文件, 包括图片Js和Css统一放到网站的公共目录Public下面,分Images、Js和Css子目录存放,如果有可能的话,甚至也可以把这些资源文件单独放一个外部的服务器远程调用,并进行优化。

模块分组.jpg(图片来源:http://www.php400.cn/275.html)

模块分组需要配置APP_NAME和APP_PATH;
在 WEB 根目录创建项目目录 App,并且拷贝框架包 ThinkPHP 至同级目录,同时在同级创建所有项目公共资源目录 Public、所有项目公共上传目录 Uploads 以及入口文件 index.php:

分组模式.png

入口文件index.php:

<?php
define('APP_NAME', 'App');

define('APP_PATH', './App/');

//开启debug,不加载缓存文件
define('APP_DEBUG', true);

require './ThinkPHP/ThinkPHP.php';

通过 url 访问 index.php ,初始化项目环境后,App 目录下自动生成的目录:


image.png

然后在App/Conf/config.php 配置文件中,配置分组选项:

<?php
return array(
    //'配置项'=>'配置值'
    'APP_GROUP_LIST' => 'Admin,Home',
    'DEFAULT_GROUP' => 'Home',
);

如果此时访问 index.php 入口文件,ThinkPHP 会报错:

image.png

因为在公共配置文件中开启了模块分组,但相应的分组目录并没有创建,需要手动创建 Admin 和 Home 组的各自配置文件:Conf 目录下创建 Admin 和 Home 目录,然后分别在目录中创建 config.php 配置文件;App/Lib/Action 目录也需要创建 Admin 和 Home 目录,然后将默认创建的 IndexAction.class.php 文件移动到 App/Lib/Action/Home 目录,此时访问入口文件不会报错,项目部署成功:

Home.png
Admin.png

如果隐藏入口文件,两者的url地址看起来几乎一样:

Home.png
Admin.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,756评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,059评论 4 62
  • 如果你不是重点大学毕业的,也没有考上研,家境一般,简历履历无特点。那恭喜你,看到我的这篇文章,因为文章就是你们准备...
    卉子的小店阅读 527评论 1 2
  • 最近越来越不勤快了…… 不大心安理得…… 1.练字 2.录音 3.笔记√ 4.背诵√
    妮可妮可喳阅读 131评论 0 0
  • 做的比较快,可能不能清晰的表达动效过程。但是我理解的软件动效就是在用户流程操作的基础上进行符合用户预期的动态效果。
    天睿阅读 186评论 0 0