最可靠方式是用 composer 安装,因 tp6+ 完全依赖 composer,手动解压易缺 vendor 导致 class 'think\app' not found,且官方已停供一键包。

直接用 Composer 安装是最可靠的方式
ThinkPHP 6+ 已完全依赖 Composer 管理,手动下载 ZIP 解压或用 FTP 上传源码的方式不仅容易漏文件,还会导致 vendor 目录缺失、类自动加载失败,最终报错 Class 'think\App' not found。官方也不再提供“一键安装包”。
实操建议:
引导 OpenClaw 代理使用 exec 和 process 工具执行 Ralph Wiggum 循环。通过 pty:true 提供正确的 TTY 支持,编排编码代理(Codex, Claude Code, OpenCode, Goose)。利用 PROMPT.md、AGENTS.md、SPECS 和 IMPLEMENTATION_PLAN.md 规划和构建代码。包含规划与构建模式、背压机制、沙箱及完成条件。用户请求循环,代理使用工具执行。
- 确保本地已安装 PHP 7.2+ 和 Composer(运行
composer --version验证) - 在终端进入目标目录,执行:
composer create-project topthink/think tp(tp是项目目录名,可自改) - 安装完成后,别急着访问,先检查
runtime/目录是否可写(Linux/macOS 执行chmod -R 755 runtime/;Windows 注意 IIS/Apache 用户权限) - 避免用
composer install替代create-project—— 后者会自动执行初始化脚本(如生成app.php、清空runtime),前者不会
Windows 下 Apache + ThinkPHP 路由 404 的真实原因
不是 .htaccess 写错了,而是 Apache 默认没开启 mod_rewrite 模块,或者虚拟主机配置里没启用 AllowOverride All。即使你把 .htaccess 放对了位置,它也根本不会被读取。
实操建议:
- 打开 Apache 配置文件
httpd.conf,确认这行已取消注释:LoadModule rewrite_module modules/mod_rewrite.so - 找到你的虚拟主机配置段(
<virtualhost></virtualhost>或<directory></directory>),确保包含:AllowOverride All - 重启 Apache(不是刷新页面);验证方法:在项目根目录放一个临时
test.htaccess,内容写deny from all,访问时应返回 403;若仍能打开,说明AllowOverride未生效 - ThinkPHP 自带的
.htaccess只适用于 Apache;Nginx 用户必须改用nginx.conf里的try_files规则,不能硬套
php think 命令执行失败的三个高频点
运行 php think 报错“找不到命令”或“class not found”,通常不是框架坏了,而是环境或路径卡在某个环节。
实操建议:
- 确认当前目录是项目根目录(即有
think文件且可执行);php think必须在该目录下运行,不能在app/或public/里执行 - 检查
think文件首行是否为#!/usr/bin/env php(Linux/macOS)或#!/usr/bin/env php(Windows 的 Git Bash 也认这个);Windows CMD 下建议统一用php think而非直接think - 如果提示
Could not open input file: think,大概率是think文件权限不对(Linux/macOS 执行chmod +x think);Windows 用户忽略此条 - 执行
php think version是最轻量的验证方式,比跑完整服务更快定位 CLI 环境问题
TP6 多应用模式下 app/multi 不生效的配置盲区
开启多应用后访问子域名或路径始终进默认应用,不是路由没配,而是 config/app.php 里 'multi_app' => true 这个开关没开,或者 app/multi 目录结构没严格按约定来——ThinkPHP 对大小写和命名极其敏感。
实操建议:
- 必须在
config/app.php中显式设置:'multi_app' => true(默认是false,即使目录存在也不会启用) -
app/multi下每个子应用必须是独立目录(如app/multi/admin),且内部必须含config/、controller/、route/等标准结构;缺route/app.php就会退回到主应用路由 - 子应用的入口文件(如
public/admin.php)必须调用App::run()->send(),不能直接 require../thinkphp/base.php - 调试时加一句
dump(app('http')->getName());在控制器里,能立刻看出当前走的是哪个应用实例
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










