必须在项目根目录下执行php think,否则因缺失think入口文件、vendor/autoload.php及app/、config/等目录导致命令静默失败或Class not found;验证方式为ls -l think可见可执行脚本且php think version能输出版本号。

必须在项目根目录下执行 php think,否则所有命令都会静默失败或报错——这不是命令写错了,而是框架根本没加载进来。
怎么确认自己在正确的项目根目录
ThinkPHP6.x 的 php think 不是全局命令,它依赖当前目录下的 think 可执行文件、app/ 和 config/ 目录,以及 vendor/autoload.php。常见误操作包括:
- 在
public/目录下执行 —— 这里没有think文件,会直接报Command not found或no such file - 在子模块(如
app/admin/)里执行 —— 命名空间推导错,生成的类可能无法自动加载 - Windows 下用 Git Bash 时输
./think—— 必须写php ./think,否则找不到 PHP 解释器 - PHP 版本低于 7.2 —— TP6 启动即语法错误,连 help 都看不到
验证方式:运行 ls -l think(Linux/macOS)或 dir think(Windows),能看到可执行脚本;再执行 php think version 能正常输出版本号(如 8.0.3)才算到位。
生成控制器和模型时命名与路径的硬约束
make:controller 和 make:model 看似简单,但 PSR-4 命名空间和目录结构必须严格对齐,否则生成的类永远 Class not found:
立即学习“PHP免费学习笔记(深入)”;
- 控制器名必须以
Controller结尾,例如php think make:controller api/UserController→ 生成app/api/UserController.php,命名空间为app\api - 模型名不加后缀,
php think make:model User→ 生成app/model/User.php,类名为User,默认对应数据表user(非users) - 如果数据库表是复数形式(如
users),得手动在模型里加protected $table = 'users'; - 生成后别手改文件位置或命名空间 —— 改了就得同步改
use引用、路由绑定、以及composer dump-autoload
顺带一提:php think build --table=user --module=admin 是批量生成 CRUD 的快捷方式,但它依赖数据库已连接且表存在,且生成的视图路径默认走 app/view/,不是 public/。
清理缓存时哪些参数不能乱加
php think clear 默认只清 runtime/cache/、runtime/log/ 和 runtime/common/,但模板缓存(runtime/view/)和路由缓存(runtime/route/)完全不碰:
- 要清模板缓存,必须加
-t:php think clear -t;否则改了模板文件页面还是旧的 - 要清路由缓存,得加
-r(TP6 支持)或手动删runtime/route/;否则新增路由访问 404 - 加
--except=redis可跳过 Redis 缓存清理(TP6),避免误刷线上缓存;TP5.1 不支持这个参数 - 千万别用
php think clear --dir或--cache --dir清空整个runtime/—— 会连配置缓存一起删,导致数据库配置变null、路由映射失效
稳妥做法是:开发阶段用 php think clear -f(仅清文件缓存),上线前再按需组合参数。
为什么 route:list 能看到路由,但访问却 404
这通常不是命令问题,而是环境链路断在了中间:
-
php think route:list输出正常,说明路由定义语法没问题,也成功注册进容器了 - 但访问 404,大概率是没启用路由缓存或缓存未刷新 —— 执行一次
php think optimize:route再试 - 或者你开了强制路由(
url_route_must = true),但新控制器没在route/app.php里显式绑定,框架拒绝 fallback - 还有可能是 Apache/Nginx 没开启
mod_rewrite或伪静态规则没配,导致请求根本没进index.php
最省事的排查顺序:先 php think clear -f,再 php think optimize:route,最后检查 Web 服务器重写配置 —— 别一上来就怀疑命令行工具本身。



















