ThinkPHP6正式发布已有一小段时间,按照官方文档实操了一遍。中间也遇到些小问题,在网上找解决方案花费了一些时间。本次分享整理了ThinkPHP6从头开始部署的详细操作步骤,希望能够帮助大家节省探索的时间。

1 下载Composer

Composer是 PHP 用来管理依赖(dependency)关系的工具。

1.1 windows版本

下载地址:getcomposer.org/

如果报错:

  1. Program Output:
  2. PHP Deprecated: Directive 'track_errors' is deprecated in Unknown on line 0

则修改php.ini:

  1. ;track_errors = On (On改为Off)
  2. track_errors = Off

重启HTTP服务后,安装通过。

1.2 macOS版本

执行:

  1. curl -sS https://getcomposer.org/installer | php

如果报错以下信息,或者迟迟下载不完:

  1. Failed to decode zlib stream

就直接去官网(getcomposer.org/download/)下载最新版的composer.phar

下载后,在存放composer.phar的目录下执行:

  1. mv composer.phar /usr/local/bin/composer

然后就可以全局使用composer了,执行以下命令查看版本号:

  1. composer -v

2 安装/升级ThinkPHP6

执行以下命令,切换为阿里云镜像加速下载:

  1. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

选好目录,执行:

  1. composer create-project topthink/think projectName

安装好后,进入项目目录,执行:

  1. php think run

浏览器访问:

  1. http://localhost:8000/

如果改变端口,则执行:

  1. php think run -p 80

升级ThinkPHP6,进入项目根目录,执行:

  1. composer update

实际部署中,应该是绑定域名访问到public目录,确保其它目录不在WEB目录下面。

3 配置调试模式

根目录下的.example.env重命名为.env,设置以下代码:

  1. APP_DEBUG = true

4 多应用部署

目录结构

  1. /www WEB部署目录(或者子目录)
  2. ├─ /app 应用目录
  3. ├─ /myApp 子应用目录
  4. ├─common.php 子应用函数文件
  5. ├─/controller 子应用控制器目录
  6. ├─Index.php 子应用控制器
  7. ├─/model 子应用模型目录
  8. ├─/view 子应用视图目录
  9. ├─/config 子应用配置目录
  10. ├─/route 子应用路由目录
  11. └─ ... 子应用更多类库目录
  12. | ├─BaseController.php 默认基础控制器类
  13. ├─common.php 公共函数文件
  14. ├─event.php 事件定义文件
  15. | ├─ExceptionHandle.php 应用异常定义文件(一定要保留这个!否则ERROR 500
  16. | |─middleware.php 全局中间件定义文件
  17. ├─provider.php 服务提供定义文件
  18. | └─Request.php 应用请求对象(一定要保留这个!否则ERROR 500

多应用模式扩展think-multi-app

要使用多应用模式,需要安装think-multi-app,在项目根目录执行以下命令安装:

  1. composer require topthink/think-multi-app

修改控制器的路径

打开app/myApp/controller/Index.php,调整namespace

  1. - namespace app\controller;
  2. + namespace app\myApp\controller;
  3. use app\BaseController;

然后通过http服务即可访问:

  1. http://127.0.0.1/thinkphp6/public/index.php/myApp

URL重写

如果想省略index.php,即通过以下方式访问

  1. http://127.0.0.1/thinkphp6/public/myApp

在public/.htaccess添加:

  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymlinks -Multiviews
  3. RewriteEngine On
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  7. </IfModule>

通过官方composer默认安装已经完成了URL重写,这里仅做备忘。

5 多级控制器

目录结构如下:

  1. ├─ /app 应用目录
  2. ├─ /myApp 子应用目录
  3. ├─/controller 子应用控制器目录
  4. ├─/api 二级控制器目录
  5. ├─/Login.php 二级控制器

Login.php代码:

  1. <?php
  2. namespace app\myApp\controller\api;
  3. use app\BaseController;
  4. class Login extends BaseController
  5. {
  6. public function index()
  7. {
  8. return '二级控制器Login';
  9. }
  10. }

设置之后就可以通过以下URL访问了:

  1. http://127.0.0.1/thinkphp6/public/myApp/api/login

自动创建API控制器

也可以通过命令行自动生成控制器,新生成的控制器包含了预设代码。在根目录执行:

  1. php think make:controller app\myApp\controller\api\Login --api

通过以上设置,基本完成了ThinkPHP6的最基础部署。

作者:Mr_兔子先生
链接:https://juejin.im/post/6844904037561663495
来源:掘金