thinkphp 6.0命令行功能需满足三条件:环境就位(启用mbstring/pdo扩展)、路径正确(项目根目录执行php think)、指令注册(内置命令即用,自定义命令须通过make:command生成或手动创建并配置console.php注册),否则无法识别或执行。

想在ThinkPHP 6.0项目中通过命令行执行自定义逻辑、定时任务或系统维护操作,必须先让框架识别并响应你的指令——这需要完成指令注册、环境就位、调用路径正确三步,缺一不可。
确认基础运行环境
进入项目根目录(确保当前目录下存在 think 可执行文件),运行 php think。若看到包含 Available commands 的列表,说明Console组件已激活;若提示 Command not found 或直接报错,大概率是PHP未启用 mbstring 或 PDO 扩展——这两个扩展是TP6命令行模块的硬性依赖,缺一则整个console子系统无法加载。
执行 php -m | grep -E "mbstring|pdo" 验证。输出为空即需修改php.ini,取消对应扩展前的分号注释,然后重启PHP服务。
执行内置命令
直接运行 php think list 查看所有可用命令,无需额外配置。
常用操作示例:
php think clear → 清除全部运行时缓存;
php think run -p 8080 → 启动内置服务器并监听8080端口;
php think version → 输出当前框架版本号(如6.3.5)。
注意:所有内置命令都基于 think 文件入口,不能在 public/ 目录下执行,否则报错 No input file specified.。
注册并运行自定义命令
方法一:使用 make:command 快速生成
第一步:执行 php think make:command SendEmail,生成 app/command/SendEmail.php;
第二步:打开该文件,在 execute() 方法内写入业务逻辑,例如发送邮件或同步数据;
第三步:在 config/console.php 中添加注册项:
'commands' => ['send-email' => 'app\command\SendEmail'];
第四步:运行 php think send-email 即可触发执行。
方法二:手动创建类文件(适用于已有逻辑迁移)
在 app/command/ 下新建 BackupDb.php,继承 think\console\Command,实现 configure() 和 execute();
【必须在 config/console.php 中显式注册,否则 php think list 不会显示该命令】。
Linux下绑定计划任务
① 先确保自定义命令已在本地测试通过,例如 php think send-email 能正常输出或完成动作;
② 编写 shell 脚本(如 /var/www/tp6/cron/send.sh),内容为:
#!/bin/bash
/usr/bin/php /var/www/tp6/think send-email;
③ 赋予执行权限:chmod +x /var/www/tp6/cron/send.sh;
④ 编辑系统级定时任务:crontab -e,追加一行:
0 2 * * * /var/www/tp6/cron/send.sh(每天凌晨2点执行);
⑤ 保存退出后,系统自动加载,无需重启crond服务。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











