


config->app.php->'show_error_msg'

修改public/.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]
- RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
- </IfModule>
默认是:
- <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>
tp6安装后默认采用的是 单应用模式部署。
单应用模式的优势是简单灵活,URL地址完全通过路由可控。配合路由分组功能可以实现类似多应用的灵活机制。
而我个人比较喜欢 多应用模式部署,比如说:对于网站来说,有前台和后台方面的应用。这个时候采用多应用模式部署的话,那在以后的开发和维护起来就更加地方便了。
如果使用了多应用模式,可以快速生成一个应用,例如生成demo应用的指令如下:
php think build demo

你会发现:上面的命令好像执行不了。是因为你没有安装多应用模式扩展think-multi-app。
安装think-multi-app扩展:
composer require topthink/think-multi-app
注意:执行上面的命令时,一定要在你的应用根目录下执行。也就是有一个think的文件的目录下执行。

安装成功之后,再次执行 php think build demo

这次执行成功后,你会发现你的应用根目录里的app文件夹里多了一个demo的文件夹。
上面的生成的应用是 demo,比如你想生成后台的应用admin,前台的应用home,api方面的应用api。主要还是看个人是什么需求再去生成相应的应用。


如下图:可127.0.0.1/index/index/index 直接访问。


3:定义路由方式。

1):在应用中新建route文件夹。新建admin.php。任意 名字都可以。
2):
- Route::get('index', 'admin/index/index');
- //Route::get('index', 'index/index'); 省略admin也可以。
请求地址为
,需加上应用名admin。

需要使用,安装。
composer require topthink/think-view
安装路径:
不安装会报错。

还需要引入View类。
- <?php
- declare (strict_types = 1);//declare(strict_type=1);是php7引入的 严格类型检查模式的指定语法
-
- namespace app\admin\controller;
-
- use think\facade\View;
-
- class Index
- {
- public function index()
- {
- //return '您好!这是一个[admin]示例应用';
- // 不带任何参数 自动定位当前操作的模板文件
- //return View::fetch();//不指定名字,则默认用index。
- return View::fetch('index2');//指定名字
- }
- }

- //静态资源引用,后加入
- 'tpl_replace_string' => [
- '__STATIC__' => '/static',
- '__JS__' => '/static/js',
- '__IMG__' => '/static/images',
- '__FONT__' => '/static/font'
- ]
使用:
- <script src="__STATIC__/js/jquery-3.6.2.min.js">script>
-
- <script src="__STATIC__/bootstrap-5.2.3-dist/js/bootstrap.js">script>
-
- <script src="__STATIC__/js/toastr.js">script>
-
- <script src="__STATIC__/layer/layer.js">script>


1):直接使用官方文档,安装tp6,workerman。
2):workerman安装完毕后,在vendor文件夹下。
3):workerman更简单。swoole更高效。workerman是php写的。swoole是c写的。
通过 composer 安装
composer require topthink/think-worker

服务端测试代码:
- namespace app\http;
-
- use think\worker\Server;
- use think\facade\Session;
-
- class Worker extends Server{
-
- protected $socket = 'websocket://0.0.0.0:2345';
-
- public function onMessage($connection, $data)
- {
- echo "onMessage\n";
- $connection->send("收到啦!!!!!");
- }
-
- /**
- * 当连接建立时触发的回调函数
- * @param $connection
- */
- public function onConnect($connection)
- {
- echo "onConnect\n";
- $connection->send("连接成功");
- }
-
- /**
- * 当连接断开时触发的回调函数
- * @param $connection
- */
- public function onClose($connection)
- {
- echo "close\n";
- }
-
- /**
- * 当客户端的连接上发生错误时触发
- * @param $connection
- * @param $code
- * @param $msg
- */
- public function onError($connection, $code, $msg)
- {
- echo "error $code $msg\n";
- }
-
- /**
- * 每个进程启动
- * @param $worker
- */
- public function onWorkerStart($worker)
- {
- echo "onWorkerStart\n";
- }
-
- }
客户端测试代码:
- <html>
- <head>
- <meta charset="utf-8" />
- <title>网页版群聊</title>
- </head>
- <body>
- <script>
- ws = new WebSocket("ws://192.168.0.145:2345");
- ws.onopen = function() {
- console.log("连接成功");
- ws.send('tom');
- console.log("给服务端发送一个字符串:tom");
- };
- ws.onmessage = function(e) {
- console.log("收到服务端的消息:" + e.data);
- };
- </script>
- </body>
- </html>
测试发现,关闭浏览器会触发close事件。
workerman和
序言 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn)
ThinkPHP6多应用模式配置经验总结_从删库到跑路养成记的博客-CSDN博客_thinkphp6 多应用
tp6+Workerman_北寻的博客-CSDN博客_tp6 workerman
使用TP6+Workerman实现私聊(类似QQ)、实时聊天(2、搭建workerman)_筱宇***的博客-CSDN博客_tp6 聊天
Thinkphp6 WorkerMan中如何向某个特定客户端发送数据-趙哥博客
Thinkphp 使用Workerman 聊天室_杰姆小生的博客-CSDN博客_thinkphp6workerman聊天