快速搭建TP6-02

2023-11-07

快速搭建TP6-02

1.配置多应用config/app.php

return [
    // 应用地址
    'app_host' => env('app.host', ''),
    // 应用的命名空间
    'app_namespace' => '',
    // 是否启用路由
    'with_route' => true,
    // 默认应用
    'default_app' => 'Login',
    // 默认时区
    'default_timezone' => 'Asia/Shanghai',
    //多应用
    'auto_multi_app' => true,

    // 应用映射(自动多应用模式有效)
    'app_map' => [],
    // 域名绑定(自动多应用模式有效)
    'domain_bind' => [],
    // 禁止URL访问的应用列表(自动多应用模式有效)
    'deny_app_list' => [],

    // 异常页面的模板文件
    'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',

    // 错误显示信息,非调试模式有效
    'error_message' => '页面错误!请稍后再试~',
    // 显示错误信息
    'show_error_msg' => false,
];

2.配置数据库config/database.php

return [
    // 默认使用的数据库连接配置
    'default' => env('database.driver', 'mysql'),

    // 自定义时间查询规则
    'time_query_rule' => [],

    // 自动写入时间戳字段
    // true为自动识别类型 false关闭
    // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
    'auto_timestamp' => true,

    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 数据库连接配置信息
    'connections' => [
        'mysql' => [
            // 数据库类型
            'type' => env('database.type', 'mysql'),
            // 服务器地址
            'hostname' => env('database.hostname', '118.178.123.186'),
            // 数据库名
            'database' => env('database.database', 'sc_dev'),
            // 用户名
            'username' => env('database.username', 'root'),
            // 密码
            'password' => env('database.password', '1234SA!@#$qianHUwanHUankuaisdk@@'),
            // 端口
            'hostport' => env('database.hostport', '3306'),
            // 数据库连接参数
            'params' => [],
            // 数据库编码默认采用utf8
            'charset' => env('database.charset', 'utf8'),
            // 数据库表前缀
            'prefix' => env('database.prefix', 'sc_'),

            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy' => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate' => false,
            // 读写分离后 主服务器数量
            'master_num' => 1,
            // 指定从服务器序号
            'slave_no' => '',
            // 是否严格检查字段是否存在
            'fields_strict' => true,
            // 是否需要断线重连
            'break_reconnect' => false,
            // 监听SQL
            'trigger_sql' => env('app_debug', true),
            // 开启字段缓存
            'fields_cache' => false,
        ],

        // 更多的数据库配置信息
    ],
];

3.修改session默认时间config/session.php

return [
    // session name
    'name'           => 'PHPSESSID',
    // SESSION_ID的提交变量,解决flash上传跨域
    'var_session_id' => '',
    // 驱动方式 支持file cache
    'type'           => 'file',
    // 存储连接标识 当type使用cache的时候有效
    'store'          => null,
    // 过期时间
    'expire'         => 86400,
    // 前缀
    'prefix'         => '',
];

开启session middleware.php

<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
    \think\middleware\SessionInit::class
];

4.自定义图片上传位置config/filesystem.php

return [
    // 默认磁盘
    'default' => env('filesystem.driver', 'local'),
    // 磁盘列表
    'disks'   => [
        'local'  => [
            'type' => 'local',
            'root' => app()->getRuntimePath() . 'storage',
        ],
        'public' => [
            // 磁盘类型
            'type'       => 'local',
            // 磁盘路径
            'root'       => app()->getRootPath() . 'public/uploads',
            // 磁盘路径对应的外部URL路径
            'url'        => '/uploads',
            // 可见性
            'visibility' => 'public',
        ],
        // 更多的磁盘配置信息
    ],
];

5.添加redis配置config/cache.php

return [
    // 默认缓存驱动
    'default' => env('cache.driver', 'file'),

    // 缓存连接方式配置
    'stores' => [
        'file' => [
            // 驱动方式
            'type' => 'File',
            // 缓存保存目录
            'path' => '',
            // 缓存前缀
            'prefix' => '',
            // 缓存有效期 0表示永久缓存
            'expire' => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize' => [],
        ],
        // 更多的缓存连接
        'redis' => [
            'type' => 'redis',
            'host' => '127.0.0.1',
            'port' => '6379',
            'password' => '123456',
            'select' => '2'
        ]
    ],
];

6.创建接口code码config/code.php

return [
    'success' => 100,//成功
    'abnormal_error' => -101,//异常错误
    'param_error' => -102, //参数验证失败
    'phone_error' => -103, //手机号验证失败(已注册或不存在该手机号)
    'user_error' => -104, //用户验证失败
    'headers_error' => -105, //请求headers错误
    'request_error' => -106, //请求方式错误
    'param_format_error' => -107, //参数格式校验错误
    'param_content_error' => -108, //接口请求参数不能为空
    'param_count_error' => -109, //请求参数的个数不正确,请仔细核对
    'time_error' => -110, //时间戳有误
    'app_key_error' => -111, //app_key无效
    'nonce_str_error' => -112, //nonce_str 随机字符串错误
    'sign_error' => -113, //sign签名错误
    'body_error' => -114, //body不能为空
    'timeout_error' => -115, //请求超时
    'repeat_error' => -116, //请求重复提交
    'supplier_error' => -117, //supplier_id 错误
    'supplier_id_error' => -118, //supplier_id 无效
    'customer_id_error' => -119, //customer_code无效
    'request_num_error' => -120, //请求频繁
    'install_repeat' => -121,//重复安装
];

7.去掉访问时域名后面的所带的index.php .htaccess

<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>
  location / {
            index index.php index.html error/index.html;
            if ( !-e $request_filename) {
                rewrite ^/(.*)$ /index.php/$1 last;
 
            }
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
8.接口返回统一格式common.php

```php
/**
 * 公共类方法返回通用格式
 * @param $status  状态
 * @param string $message 提示语
 * @param array $data 返回数据
 * @param $code   具体状态码
 * @return array
 */
function callBack($status, $code, $message = 'ERROR', $data = [])
{
    return [
        'status' => is_numeric($status) ? $status : config('status.' . $status),
        'code' => is_numeric($code) ? $code : config('code.' . $code),
        'message' => $message,
        'data' => $data
    ];
}

9.异常处理ExceptionHandle.php

  /**
     * Render an exception into an HTTP response.
     *
     * @access public
     * @param \think\Request $request
     * @param Throwable $e
     * @return Response
     */
    public function render($request, Throwable $e): Response
    {
        // 添加自定义异常处理机制
        $result = [
            'status' => config('status.error'),
            'code' => -102,
            'message' => $e->getMessage(),
            'data' => []
        ];
        if (method_exists($e, 'getStatusCode')) {
            $httpStatus = $e->getStatusCode();
        } else {
            $httpStatus = $this->httpStatus;
        }
        return json($result, $httpStatus);
    }

10.需要继承的控制器

    protected $user = null; //用户信息

    public function initialize()
    {
        parent::initialize(); // TODO: Change the autogenerated stub
        if (!$this->baseUserInfo()) {
            echo json_encode(callBack(config('status.login_overtime'), config('code.user_error'), '登录超时,请重新登录'),JSON_UNESCAPED_UNICODE);
            die();
        }
    }

11.创建异常控制器Error.php

<?php
namespace app\admin\controller;
class Error{
    public function __call($method, $args)
    {
        return json(callBack(config('status.error'),config('code.param_error'),"不存在该{$method}控制器'"));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速搭建TP6-02 的相关文章

  • php 在内容前插入十六进制字符数

    我正在将网站移动到新服务器 旧服务器有 php 5 3 2 新服务器有 php 5 5 9 Centos httpd Apache 2 2 26 我已经复制了文件 它工作正常 除了唯一奇怪的事情 一些奇怪的十六进制数字被插入到页面内容之前
  • 如何在 PHP 中正确分割路径

    执行以下操作的最佳方法是什么 我通过 AJAX 请求获取路径 e g dir1 dir2 dir3 dir4 我需要在我的网页上这样展示它 dir1 gt gt dir2 gt gt dir3 gt gt dir4 它们每个都是 html
  • Laravel 5 与 SAML 2 和现有 IDP 集成

    我使用 Laravel 5 我正在尝试将 SAML 2 0 与其集成 我找到了这个包 https github com aacotroneo laravel saml2 https github com aacotroneo laravel
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • 如何将 MySql 表导出/转储到文本文件中,包括字段名称(也称为标题或列名称)

    在 MySql 的解释器中 很容易将表及其字段名称转储到屏幕上 似乎没有简单的方法可以将表导出到制表符分隔或 CSV 输出文件包括它的列标题 我尝试仅使用 SQL 或 Linux 命令行来完成此操作 而不用其他语言编写程序 谢谢 将查询通过
  • 如何将 ctype_alpha 与 UTF-8 结合使用

    如何将 ctype alpha 与 UTF 8 一起使用 我有这个代码 if empty POST false if isset POST first name empty POST first name if ctype alpha PO
  • 使用 php 将 HLS Segment (ts) 视频转换并加入到 mp4

    你好我正在使用这个工具 https github com Ejz HLSDownloader https github com Ejz HLSDownloader将 HLS 视频片段从 m3u8 播放列表下载到 ts 文件中 不 我不知道如
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • PHP header() 和 jquery mobile

    我想使用 php header Location newpage php 进行重定向 我没有收到错误 但 Jquery mobile 似乎无法加载目标页面 并且地址栏仍保留旧地址 请问您有什么建议吗 Thanks 尝试添加data ajax
  • cURL '格式错误的网址'

    This url 在浏览器中工作得很好 但 cURL 返回错误 3 格式错误的 url 关于解决方法有什么想法吗 EDIT 卷曲代码 function get web page url options array CURLOPT RETUR
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 在无文本搜索查询中使用 sphinx 与 MySQL

    我有这样的疑问 假设我有一个大表 与一个较小的用户表有关系 这个想法是在那个真正的大表中搜索大于给定日期的日期并按分数 例如大整数 排序 并同时获取相关的用户信息 此查询的结果大约每 10 分钟就会更改一次 所以 没有文本搜索 但我有一个非
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • 无需下载整个文件即可读取 ID3 标签

    是否可以读取 MP3 文件的 ID3 标签 持续时间 艺术家 标题 而无需下载整个文件 我做了一些测试 只需下载 MP3 文件的几个字节就可以获得艺术家和标题标签 但我不确定持续时间和其他标签是否可能 Thanks 我刚刚发现 ffmpeg
  • php,in_array,0值

    我试图理解in array下一个场景的行为 arr array 2 gt Bye 52 77 3 gt Hey var dump in array 0 arr 返回值in array 是布尔值true 正如你所看到的no值等于0 所以有人可
  • 如何使用 PDO 动态构建查询

    我正在使用 PDO 并想做这样的事情 query dbh gt prepare SELECT FROM table WHERE column value query gt bindParam table tableName query gt
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建

随机推荐

  • Asp.Net 企业微信第三方应用开发(随手笔记)

    C 企业微信第三方应用开发 OAuth2简介 1 注册企业 2 新建第三方应用 3 网页授权链接 OAuth2简介 OAuth2的设计背景 在于允许用户在不告知第三方自己的帐号密码情况下 通过授权方式 让第三方服务可以获取自己的资源信息 1
  • Vuforia 中在脚本中添加识别图被识别和丢失的回调

    start Vuforia 的unity sdk中有一个重要的脚本 DefaultTrackableEventHandler cs 这个脚本在场景中拖入ImageTarget的预制体时会自动挂载 using UnityEngine usin
  • 快速排序【模板+边界处理】

    全文目录 快速排序的思想 快速排序演示图 代码模板 i 和 j 的取值和循环处理 i 和 j 的取值 循环条件判断 边界问题 什么是边界问题 如何处理边界问题 为什么要这样处理边界问题 区间划分问题 取最值问题 mid 取中间值时是否需要
  • LLVM学习之基础知识

    介绍 学习LLVM与代码混淆技术课程总结出来的经验 希望能够帮助到大家理解 1 我们首先学会LLVM的基础知识 2 如何搭建LLVM的环境 3 编译一个Hello world 4 LLVM IR基本语法 LLVM搭建环境 Ubuntu 20
  • 让AI生成的图像转化为视频

    Hello 让AI生成图像相信都不陌生 毕竟相关内容铺天盖地 如何让AI生成的图像再转化为视频呢 让图像动起来 让图像去说话 或许是一件非常有趣的一件事情呢 那么 我们接下来要不要去试一试 马上去体验一下具有前瞻性的前沿科技呢 我想 你一定
  • 48脚STM32内部基准电压校准ADC的一些心得记录

    STM32的48脚的单片机因为没有Vref Vref 所以我们使用一些高精度参考电压芯片来提高ADC的精度很不方便 这里还有一种方法可以参考下 STM32内部有一个专门用于校准的稳压器VREFINT 它由外部的VSSA供电 他的电压一般为1
  • k8s-day1-k8s简介及基础架构

    1 K8S简介 Kubernetes是容器集群管理系统 是一个开源的平台 可以实现容器集群的自动化部署 自动扩缩容 维护等功能 Kubernetes是一个完备的分布式系统支撑平台 具有完备的集群管理能力 多扩多层次的安全防护和准入机制 多租
  • python 程序员进阶之路:从新手到高手的100个模块

    在知乎和CSDN的圈子里 经常看到 听到一些 python 初学者说 学完基础语法后 不知道该学什么 学了也不知道怎么用 一脸的茫然 近日 CSDN的公众号推送了一篇博客 题目叫做 迷思 Python 学到什么程度可以面试工作 真实反映了
  • win电脑主板设置的Bios密码清除方法

    bios保存着计算机最重要的基本输入输出的程序 开机后自检程序和系统自启动程序 它可从CMOS中读写系统设置的具体信息由于我们一般很少需求进入BIOS设置 因此久而久之 很多朋友容易忘记Bios密码 那么Bios密码忘记了怎么办呢 这是最近
  • opencv中 aplacian算子、Scharr和Sobel算子的API参数

    1 Laplacian算子 cv2 Laplacian src ddepth dst ksize scale delta borderType src 输入图像 通常为灰度图像 单通道 ddepth 输出图像的深度 一般使用cv2 CV 6
  • Spring中有哪些情况会导致@Bean注入失效呢?

    转自 Spring中有哪些情况会导致 Bean注入失效呢 下文笔者讲述Spring中导致 bean注入失败的相关情况说明 如下所示 实现思路 1 component scan扫描路径配置错误 2 Conditional修饰条件 3 bean
  • 学习swift的资料

    https developer apple com library content documentation Swift Conceptual Swift Programming Language CollectionTypes html
  • 数据库表创建索引

    创建一个表 创建名为 Person 的表 有四个列 列名是 LastName FirstName Address 以及 Age 定义列的长度 CREATE TABLE Person LastName varchar 30 FirstName
  • 使用scrapy框架爬取51job的关于python的职位,并且进行分析

    example py 爬虫的主文件 大部分的爬虫逻辑都在这 coding utf 8 import scrapy import pyecharts from items import Scrapy3Item class ExampleSpi
  • cpp: Strategy Pattern

    Gold h 此文件包含 Gold 类 策略模式 Strategy Pattern C 14 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit pragma once ifndef GOLD H
  • MySql中的数据修改

    1 insert插入操作 单行插入的语法格式 INSERT INTO student 列表1 列表2 列表3 列表4 列表5 列表6 VALUES 值1 值1 值1 值1 值1 值1 INSERT INTO student id name
  • python赋值、深拷贝和浅拷贝的区别详解

    一 前言 在python中 对象赋值实际上是对象的引用 当创建一个对象 然后把它赋值给另一个变量的时候 python并没有拷贝这个对象 而只是拷贝了这个对象的引用 二 区别 1 直接赋值 默认浅拷贝传递对象的引用而已 原始列表改变 被赋值的
  • 使用企业微信登录小程序

    概述 当小程序在企业微信端运行时 需要通过对应的登录接口获取到当前企业微信用户在当前企业的员工身份信息 开发者需特别关注 当小程序在微信端运行时由微信派发和验证code参数 当小程序在企业微信端运行时由企业微信派发和验证code参数 两个平
  • vue+element-ui实现一键切换皮肤

    element ui可以自己定义主题并下载 选择好自己想要的主题 下载到本地 我下载了一套暗黑模式 一套默认的用来白天黑夜模式切换 文件目录如下 在项目的index html文件中 在sideBar vue页面中 新增下拉框选择模式
  • 快速搭建TP6-02

    快速搭建TP6 02 1 配置多应用config app php return 应用地址 app host gt env app host 应用的命名空间 app namespace gt 是否启用路由 with route gt true