TP5.1运行php think make:middleware Check 报错

本文详细介绍了在使用ThinkWorker时遇到与Workerman库中Worker类名冲突的问题,并提供了具体的解决方案,包括修改类名和替换代码中的实例引用。

错误信息
PHP Fatal error: Cannot use Workerman\Worker as Worker because the name is already in use in D:\2020study\think\vendor\topthink\think-worker\src\command\Server.php on line 22
PHP Stack trace:
PHP 1. {main}() D:\2020study\think\think:0
PHP 2. think\Console::init() D:\2020study\think\think:22
PHP 3. think\Console->addCommands() D:\2020study\think\thinkphp\library\think\Console.php:110
PHP 4. is_subclass_of() D:\2020study\think\thinkphp\library\think\Console.php:392
PHP 5. spl_autoload_call() D:\2020study\think\thinkphp\library\think\Console.php:392
PHP 6. think\Loader::autoload() D:\2020study\think\thinkphp\library\think\Console.php:392
PHP 7. think__include_file() D:\2020study\think\thinkphp\library\think\Loader.php:132

Fatal error: Cannot use Workerman\Worker as Worker because the name is already in use in D:\2020study\think\vendor\topthink\think-worker\src\command\Server.php on line 22

Call Stack:
0.0003 344992 1. {main}() D:\2020study\think\think:0
0.0305 1847192 2. think\Console::init() D:\2020study\think\think:22
0.0323 1922184 3. think\Console->addCommands() D:\2020study\think\thinkphp\library\think\Console.php:110
0.0403 2302872 4. is_subclass_of() D:\2020study\think\thinkphp\library\think\Console.php:392
0.0403 2302968 5. spl_autoload_call() D:\2020study\think\thinkphp\library\think\Console.php:392
0.0403 2303056 6. think\Loader::autoload() D:\2020study\think\thinkphp\library\think\Console.php:392
0.0405 2303168 7. think__include_file() D:\2020study\think\thinkphp\library\think\Loader.php:132

[think\exception\ErrorException]
Cannot use Workerman\Worker as Worker because the name is already in use

Exception trace:
() at D:\2020study\think\vendor\topthink\think-worker\src\command\Server.php:22
think\Error::appShutdown() at n/a:n/a

解决办法

找到目录:
\vendor\topthink\think-worker\src\command\Server.php

use Workerman\Worker;
修改为:
use Workerman\Worker as Worker2;
紧接着修改 119 行与 126的 worker 改为 Worker2


找到目录:
\vendor\topthink\think-worker\src\command\GatewayWorker.php

use Workerman\Worker;
修改为:
use Workerman\Worker as Worker3;

# 问题解答 ## 普通文本型回答 你当前遇到的错误: ``` [InvalidArgumentException] Command "make:migration" is not defined. ``` 说明你的 ThinkPHP 8 项目**尚未安装数据库迁移扩展包**,虽然你想使用 `php think make:migration` 创建迁移文件,但该命令不属于 ThinkPHP 内置功能,必须通过 Composer 安装额外组件才能启用。 --- ### ✅ 解决方案:安装迁移扩展 在项目根目录运行以下命令: ```bash composer require topthink/think-migration ``` > 📁 确保你在 `D:\phpstudy_pro\WWW\student_system` 这个路径下执行! --- #### ✅ 安装成功后你会看到: - `vendor/topthink/think-migration/` 目录被创建 - 新增了 `migrate:*` 和 `make:migration` 命令支持 --- ### 第一步:验证是否安装成功 运行: ```bash php think list | grep migrate ``` 你应该能看到类似命令出现: ``` migrate:create migrate:run migrate:rollback migrate:status ``` 以及: ```bash php think make:migration --help ``` 如果不再报错,说明已可用! --- ### 第二步:手动创建 migrations 目录 即使安装了扩展,ThinkPHP **不会自动创建目录**,你需要手动创建: 👉 在项目根目录新建: ``` database/ └── migrations/ ``` 即: 1. 进入 `D:\phpstudy_pro\WWW\student_system` 2. 新建文件夹:`database` 3. 在 `database` 内再新建:`migrations` --- ### 第三步:生成第一个迁移文件 现在运行: ```bash php think make:migration CreateUserTable ``` ✅ 成功输出示例: ``` Create Migration: database\migrations\20250405000000_create_user_table.php successfully ``` 这个 PHP 文件就是你的数据库结构定义文件,接下来可以编辑它来添加字段。 --- ### 🔁 总结操作流程(小白也能懂) | 步骤 | 操作 | |------|------| | 1️⃣ | 打开命令行,进入项目目录:<br>`cd D:\phpstudy_pro\WWW\student_system` | | 2️⃣ | 安装迁移插件:<br>`composer require topthink/think-migration` | | 3️⃣ | 手动创建文件夹:<br>`database\migrations` | | 4️⃣ | 生成迁移文件:<br>`php think make:migration CreateUserTable` | | 5️⃣ | 编辑生成的文件,添加表结构 | | 6️⃣ | 执行建表:<br>`php think migrate:run` | --- 💡 提示:如果你之前尝试过安装但失败,请检查网络或更换 Composer 镜像源: ```bash composer config repo.packagist composer https://mirrors.aliyun.com/composer/ ``` 然后再运行 `require` 命令。 --- ✅ 至此,你就可以正常使用迁移系统了!继续按照之前的教程编写 `up()` 方法中的表结构即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值