thinkphp 必须用 composer create-project 初始化项目,而非 require;.env 配置优先级高于 php 文件,需取消注释并清空 runtime/cache;web 服务器根目录必须指向 public/,否则暴露敏感文件且启动失败。

ThinkPHP 不能直接“安装”,它本质是 Composer 管理的 PHP 库,强行用 FTP 上传或手动解压 zip 是后续踩坑的起点。
用 composer create-project 初始化项目(不是 composer require)
ThinkPHP 是一个框架级项目结构,不是单个可引入的包。直接 composer require topthink/think 只会拉取核心组件,缺路由、命令行、public 入口等关键文件,启动报 Class 'think\App' not found 或 404 是必然结果。
- 正确做法:在空目录下运行
composer create-project topthink/think tp8(tp8 是目录名,可自定) - ThinkPHP 6/7/8 均适用此命令,版本由
topthink/think的 latest tag 决定;如需指定 8.0.x,加@8.0后缀 - 别在已有项目里硬塞 ThinkPHP —— 它不兼容 Laravel 或 Symfony 的入口逻辑,混用会破坏自动加载和生命周期
改 .env 前先确认 APP_DEBUG 和数据库配置位置
ThinkPHP 默认读取根目录下的 .env,但这个文件只在 create-project 时生成一次,且默认注释掉大部分配置项。新手常把数据库参数写进 config/database.php,结果修改无效 —— 因为 .env 优先级更高,且开启后会覆盖 PHP 配置文件里的同名键。
- 必须取消
.env中APP_DEBUG=true的注释,否则错误全被静默吞掉,只显示白屏或“500” - 数据库配置写法是
DB_TYPE=mysql、DB_HOST=127.0.0.1,不是database.type这类嵌套格式 - 修改
.env后无需重启 PHP-FPM,但需清空runtime/cache/目录,否则旧配置仍被缓存
php think 命令跑不起来?检查 think 文件权限和 PHP CLI 版本
执行 php think make:controller User 报 Command "make:controller" is not defined,大概率不是命令拼错,而是框架未正确初始化或 CLI 环境与 Web 不一致。
- 确保当前目录是项目根目录(含
think可执行脚本),不是app/或public/ - Linux/macOS 下若提示
Permission denied,给think加执行权限:chmod +x think - CLI 使用的 PHP 版本可能和 Web 服务器不同(比如 MAMP 自带 PHP,终端用的是系统版),运行
php -v和which php确认一致性 - 部分共享主机禁用
exec(),此时php think会卡住或无响应,只能改用 Web 端路由模拟生成逻辑
最常被跳过的一步:Web 服务器没指向 public/ 目录,而是直接映射到项目根。这会导致 .env、config/ 等敏感目录被外部访问,且 index.php 找不到引导文件 —— 错误日志里反复出现 require(): Failed opening required '.../thinkphp/base.php' 就是这个原因。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










