ThinkPHP 安装

1. 前言

上小节介绍了如何在 Windows 和 Linux 操作系统中安装 Composer,本小节介绍如何使用 Composer 安装 ThinkPHP 框架,Composer 安装的好处是使用者不用关注依赖包中的依赖关系,只需要通过命令加载,然后直接使用即可。

2. ThinkPHP 框架安装

2.1来到 ThinkPHP官网,点击 应用框架GIT仓库
图片描述

2.2 找到代码仓库下面的安装命令并复制:
图片描述

2.3 执行上述命令之后即可开始下载 ThinkPHP6.0

命令:composer create-project topthink/think tp 6.0.*

图片描述

Tips: 若下载速度太慢,可能是 Composer 源地址造成的,可自行上网查找切换 Composer 地址源的方法。

3. ThinkPHP 安装视频

4. ThinkPHP 框架目录介绍

下面列出 ThinkPHP6.0 框架目录名称和说明:

4.1 单应用模式

默认安装后的目录结构就是一个单应用模式:

目录名称 功能与作用描述
├─app 应用目录
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─ … 更多类库目录
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie 配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL 和路由配置
│ ├─session.php Session 配置
│ ├─trace.php Trace 配置
│ └─view.php 视图配置
├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
├─public WEB 目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer 类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件

4.2 多应用模式

若需要一个多应用的项目架构,目录结构可以参考下面的结构进行调整:

目录名称 功能与作用描述
├─app 应用目录
│ ├─app_name 应用目录
│ │ ├─common.php 函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ ├─route 路由目录
│ │ └─ … 更多类库目录
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
├─config 全局配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie 配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL 和路由配置
│ ├─session.php Session 配置
│ ├─trace.php Trace 配置
│ └─view.php 视图配置
├─public WEB 目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer 类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件

Tips:多应用模式部署后,记得删除 app 目录下的 controller 目录(系统根据该目录作为判断是否单应用的依据)。在实际的部署中,请确保只有 public 目录可以对外访问。在 mac 或者 linux 环境下面,注意需要设置 runtime 目录权限为 777

4.3 默认应用文件

默认安装后,app 目录下会包含下面的文件:

文件名称 功能与作用描述
├─app 应用目录
│ ├─BaseController.php 默认基础控制器类
│ ├─ExceptionHandle.php 应用异常定义文件
│ ├─common.php 全局公共函数文件
│ ├─middleware.php 全局中间件定义文件
│ ├─provider.php 服务提供定义文件
│ ├─Request.php 应用请求对象
│ └─event.php 全局事件定义文件

Tips: provider.php 服务提供定义文件只能全局定义,不支持在应用下单独定义。

5. 项目根目录设置

5.1 nginx 设置根目录

server
 {
        listen 80;
        server_name tp6.com;
        #include https-ssl.conf;
        index index.html index.htm index.php;
        root  /home/www/www/tp/public;
        location / {
          if ( $request_method = 'OPTIONS' ) {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,SALE-TOKEN,x-oss-pub-key-url,X_OSS_PUB_KEY_URL;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS,HEAD,PUT,DELETE;
            add_header Access-Control-Allow-Credentials true;
            return 200;
          }
                try_files $uri $uri/ /index.php?$query_string;
        }
        include denyrobots.conf;
        include enable-php.conf;
        access_log  /home/wwwlog/nginx/access/api.com-access.log;
}

Tips: 其中 root 后面的路径就是项目根目录,可以看到 ThinkPHP 框架中 public 为根目录,在 public 目录中有一个 index.php 入口文件。

5.2 apache 设置根目录

<VirtualHost *:80>
    DocumentRoot "E:/www/tp/public/tp6.com"
    ServerName tp6.com
    ServerAlias 
    FcgidInitialEnv PHPRC "D:/soft/phpstudy_pro/Extensions/php/php7.4.3nts"
    AddHandler fcgid-script .php
    FcgidWrapper "D:/soft/phpstudy_pro/Extensions/php/php7.4.3nts/php-cgi.exe" .php
  <Directory "E:/www/tp/public/tp6.com">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
	  DirectoryIndex index.php index.html error/index.html
  </Directory>
</VirtualHost>

Tips: 其中 E:/www/tp/public/tp6.com 为网站根目录,需要根据自己本机实际路径配置。

6. url 重写

6.1 nginx 设置 url 重写

location / { // …..省略部分代码
   if (!-e $request_filename) {
   		rewrite  ^(.*)$  /index.php?s=/$1  last;
    }
}

6.2 apache 设置 url 重写

新建 .htaccess 文件放到 public 根目录下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

6.3 iis 设置 url 重写

IIS 的高版本下面可以配置 web.Config,在中间添加 rewrite 节点:

<rewrite>
 <rules>
 <rule name="OrgPage" stopProcessing="true">
 <match url="^(.*)$" />
 <conditions logicalGrouping="MatchAll">
 <add input="{HTTP_HOST}" pattern="^(.*)$" />
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.php/{R:1}" />
 </rule>
 </rules>
 </rewrite>

7. 小结

本小节介绍了如何使用 Composer 命令安装 ThinkPHP6.0 框架,安装完成之后,默认是单应用模式的目录结构,若想改成多应用目录结构可按照本小节介绍的目录结构进行调整,需要注意的是单应用模式调整为多应用模式目录,需要删除 app 目录下的 controller 目录,本教程后续小节将使用默认的单应用模式。