lnmp - tp6.0的安装和简单使用

概述

使用了很长时间的Mac M2芯片的电脑在之前使用虚拟机之前总有一些bug不是那么好用,周末之余重新安装了一下centos虚拟机,搭建了lnmp环境,打算自己挤时间,做一点应用,作为一次新的小小的尝试。

安装&更新

centos 虚拟机安装

去centos官网下载安装包,https://www.centos.org/download/ 选择 ARM64 (aarch64)这个版本不会影响lnmp的安装,安装之前我一直想的会不会因为版本太高而导致不好用,非常丝滑,不用担心。

在这里插入图片描述

在开发的过程中有个选项需要注意,左侧选择server,右侧选择所需要的插件和兼容程序,其中需要注意的是windows兼容程序、开发工具、unix兼容程序、桌面等等,根据自己的需要选择。

#开发环境:
php 7.4.33
mysql 5.7
nginx 1.26

tp6.0+ 项目的初始化

# 创建
composer create-project topthink/think 你的应用名称
# 更新
composer update topthink/framework

在启动的时候,会遇见一个小小的问题,去php.ini配置文件中去找disable_functions注释掉下面的三个函数proc_get_status、proc_open、passthru,php配置文件的路径可能不一样,可以使用命令 php -i | grep php.ini去搜索。

在这里插入图片描述

proc_get_status() 函数用于获取通过 proc_open() 函数打开的进程的信息。这个函数返回一个关联数组,其中包含了关于该进程的各种状态信息,如进程ID、是否还在运行、输入/输出流的状态等。这些信息对于监控和管理通过PHP执行的进程非常有用。

出于函数都是出于安全原因,以上函数在某些环境中可能被禁用。

#thinkphp6.0 启动命令
php think run -p 80

tp6.0+ 多应用模式

设计初衷,在开发的过程中有很多痛点,比如数据模型的不规范调用,返回数据格式的不统一,所以设计初衷使用4层设计、使用前后端分离采用Api Json数据交互的方式来进行交互和处理。

Controller 针对不同的客户端请求,web(PC)、admin(后台管理),暂时只有这两个客户端的需求,把所有的业务逻辑涉及到的统一封装在Service业务逻辑层,第三方基础库统一放在Library下。

tp6.0使用composer方式来安装多应用插件,安装多应用命令 composer require topthink/think-multi-app

模型、错误处理、中间件

对Tp6.0框架中模型、错误处理、中间件,先做一个简单的使用,有助于了解和帮助后面更好的开发。

模型

Mysql的引入最为方便和便捷、在app中选择一个目录,新建一个PHP文件,定义好命名空间,$pk是定义的主键key,$table是表名,Mysql的配置在根目录.env下设置,代码如下:

namespace app\common\model;use think\Model;
class Manage_Admin extends Model{protected $pk = 'admin_id';protected $table = 'manage_admin';public function getAdminDetailsById($admin_id): array{if(empty($admin_id)){return [];}return $this->where('admin_id',$admin_id)->find()->toArray();}
}
错误处理

多应用下的错误处理有一点不同,需要把对应的映射关系文件放置在自己的目录下,新建名为provider.php的文件,添加对应的映射关系,代码如下:

use app\admin\exception\Http;
return ['think\exception\Handle' => Http::class,
];

http文件代码,如下:

namespace app\admin\exception;use think\exception\Handle;
use think\Response;
use Throwable;class Http extends Handle {private int $statusCode = 500;public function render($request, Throwable $e): Response{if(method_exists($e, 'getStatusCode')){$httpStatusCode = $e->getStatusCode();}else{$httpStatusCode = $this->statusCode;}return show($httpStatusCode, $e->getMessage());}
}
中间件

中间件是一个非常常用的插件,对公共的请求做一些拦截,参数验证等等,先简单实现一下这里的配置和demo,同理,应用下先放置配置文件,代码如下:

return [app\admin\middleware\Check::class,
];

Check映射文件代码,如下:

namespace app\admin\middleware;
use think\Response;class Check {public function handle($request, \Closure $next){return $next($request);}/*** 中间件结束调度* @param Response $res* @return void*/public function end(Response $res){}
}

最后我的app目录的树是这样的,如下:

├── app
│   ├── admin
│   │   ├── controller
│   │   ├── exception
│   │   └── provider.php
│   ├── AppService.php
│   ├── BaseController.php
│   ├── common
│   │   ├── library
│   │   ├── model
│   │   └── service
│   ├── common.php
│   ├── event.php
│   ├── ExceptionHandle.php
│   ├── middleware.php
│   ├── provider.php
│   ├── Request.php
│   └── service.php

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419074.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OCC开发_变高箱梁全桥建模

概述 上一篇文章《OCC开发_箱梁梁体建模》中详细介绍了箱梁梁体建模的过程。但是,对于实际桥梁,截面可能存在高度、腹板厚度、顶底板厚度变化,全桥的结构中心线存在平曲线和竖曲线。针对实际情况,通过一个截面拉伸来实现全桥建模显…

算法复杂度 —— 数据结构前言、算法效率、时间复杂度、空间复杂度、常见复杂度对比、复杂度算法题(旋转数组)

目录 一、数据结构前言 1、数据结构 2、算法 3、学习方法 二、 算法效率 引入概念:算法复杂度 三、时间复杂度 1、大O的渐进表示法 2、时间复杂度计算示例 四、空间复杂度 计算示例:空间复杂度 五、常见复杂度对比 六、复杂度算法题&…

《JavaEE进阶》----12.<SpringIOCDI【扫描路径+DI详解+经典面试题+总结】>

本篇博客主要讲解 扫描路径 DI详解:三种注入方式及优缺点 经典面试题 总结 五、环境扫描路径 虽然我们没有告诉Spring扫描路径是什么,但是有一些注解已经告诉Spring扫描路径是什么了 如启动类注解SpringBootApplication。 里面有一个注解是componentS…

【学习笔记】3GPP WG SA5 Rel-19标准化工作管理和编排

3GPP WG SA5 Rel-19标准化工作涵盖了管理和编排要求、管理阶段2和管理流程,以及阶段3 OpenAPI和YANG解决方案集,以在多供应商环境中为5G网络提供完整的管理互操作性能力。 SA5以WG SA1通过紧密跟踪其他3GPP工作组的进展,这些工作组产生新的网…

如何使div居中?CSS居中终极指南

前言 长期以来,如何在父元素中居中对齐一个元素,一直是一个让人头疼的问题,随着 CSS 的发展,越来越多的工具可以用来解决这个难题,五花八门的招式一大堆,这篇博客,旨在帮助你理解不同的居中方法…

【机器人工具箱Robotics Toolbox开发笔记(二)】Matlab中机器人工具箱的下载与安装

Matlab机器人工具箱(Robotics Toolbox)可从Peter Corke教授提供的网站上免费下载。网址为:http://www.petercorke.com/Robotics_Toolbox.html。 图1 网站所提供的机器人工具箱版本 在Downloading the Toolbox栏目中单击here按钮进入下载页面,然后在该页面中填写国家、组织…

Qt多语种开发教程

Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中。 今天讲讲,Qt开发的正序怎么做多语言开发。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置发育就显示法语…

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询…

【C语言】详解结构体(下)(位段)

文章目录 前言1. 位段的含义2. 位段的声明3. 位段的内存分配(重点)3.1 存储方向的问题3.2 剩余空间利用的问题 4. 位段的跨平台问题5. 位段的应用6. 总结 前言 相信大部分的读者在学校或者在自学时结构体的知识时,可能很少会听到甚至就根本没…

win10不用anaconda安装tensorflow-cpu并导入pycharm

记录一下防止忘了 一、前提:已经安装了python3.6.4,想用tensorflow的包 二、在pycharm中File-Settings-Project Interpreter点“”号导入很慢,所以直接在cmd中使用 pip install -i https://mirrors.aliyun.com/pypi/simple tensorflow-cpu下载好&#x…

2024AI绘画工具排行榜:探索最受欢迎的AI绘图软件特点与选择指南

AI绘画工具各有优势,从开放性到对特定语言和文化的支持,以及对图像细节和艺术性的不同关注点,根据具体需求选择合适的工具 MidJourney 图片品质卓越,充满独特创意,初期能够免费获取数十账高质量图片,整个生…

(一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别

🍂1、不说废话,现象展示 🍃图片识别 🍃视频识别 自己训练样本 十分简易快速 opencv级联ha

前端:Vue3学习-2

前端:Vue3学习-2 1. vue3 新特性-defineOptions2. vue3 新特性-defineModel3. vue3 Pinia-状态管理工具4. Pinia 持久化插件 -> pinia-plugin-persistedstate 1. vue3 新特性-defineOptions 如果要定义组件的name或其他自定义的属性,还是得回归原始得方法----再…

页面要突破手机安全区域来全屏显示(沉浸式模式显示),其他页面不需要,如何设置安全区域文字颜色

#效果图 ##思路遇到的问题 在aboutToAppear中使用window模块的 getLastWindow 和 setWindowLayoutFullScreen两个方法来处理全屏显示 设置沉浸式模式的特点: 在任何一个页面中设置过一次之后,其他页面也会跟着全屏显示 这么处理会出现问题&#xff1a…

实验七 期中练习

实验目的及要求 目的:掌握File类的作用和使用方法,掌握运用文件字节输入输出流对文件进行操作,综合运用学过的知识。 要求: (1)编写FileDemo类测试File类的常用方法 (2)用FileOu…

2024国赛数学建模-模拟火算法(MATLAB 实现)

模拟退火算法 1.1 算法原理 模拟退火算法的基本思想是从一给定解开始 ,从邻域 中随机产生另一个解 ,接受 Metropolis准则允许目标函数在 有限范围内变坏 ,它由一控制参数 t决定 ,其作用类似于物 理过程中的温度 T,对于控制参数的每一取值 ,算法持续进 行“产生 —判断 —接受…

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合 1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实…

oracle数据块内部结构详解

文章目录 Oracle数据块详解概述Oracle块具有以下特点:① 最小的I/O单元;② 包含一个或多个OS块;③ 大小由参数DB_BLOCK_SIZE决定;④ 数据库创建时设置,数据库创建后不能更改 Oracle数据块详解 概述 操作系统块是…

音频-语言大模型原理

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

Flutter中自定义气泡框效果的实现

在用户界面的设计中,气泡框(Bubble)是一种非常有效的视觉工具,它可以用来突出显示信息或提示用户。气泡框广泛应用于聊天应用、通知提示等场景。在 Flutter 中,虽然有很多现成的气泡框组件,但如果你想要更多…