ThinkPHP 新项目必须用 composer create-project 安装,否则缺少 app/、config/、public/ 等目录导致 Class 'think\App' not found;已有项目才可用 composer require 添加扩展包。

composer create-project 安装,不能用 composer require topthink/think ——后者只装进 vendor,不生成 app/、config/、public/ 等目录,必然报错 Class 'think\App' not found。安装 ThinkPHP 不是简单执行一条 require 命令的事。它分场景:新建项目、已有项目加功能、或离线部署。选错方式,轻则白忙一场,重则整个项目启动失败。
新项目:用 create-project 创建完整骨架
这是官方唯一推荐、最稳妥的方式。它会自动下载标准目录结构、解析全部依赖、运行初始化脚本(如生成 .env、清空 runtime),开箱即用。
- 确保系统已安装 PHP 7.4+(TP6)或 PHP 8.0+(TP8),并能运行
composer --version - 在空目录下执行:
composer create-project topthink/think myapp(myapp 是你的项目名) - 想指定版本?加版本约束,例如:
composer create-project "topthink/think:^8.0" myapp - 进入项目:
cd myapp,确认 public/ 和 runtime/ 目录存在 - Linux/macOS 下给 runtime 赋写权限:
chmod -R 755 runtime/;Windows 用户需确保 Web 服务器进程(Apache/IIS)对该目录有修改权限 - Web 服务器根目录必须设为 public/,否则路由 404、静态资源打不开
已有项目:用 require 添加扩展包
这个操作只适用于已经通过 create-project 正常跑起来的 ThinkPHP 项目。比如你要加验证码、队列、文件系统、Excel 导出等功能。
- 先
cd进入项目根目录(含 composer.json、app/、config/、public/) - 执行命令,例如:
composer require topthink/think-captcha或composer require topthink/think-filesystem:^2.0 - 安装后检查:
vendor/topthink/下是否有对应文件夹,composer.json的 require 区域是否新增了该条目 - 部分扩展(如 think-queue、think-swoole)不会自动复制配置文件,需手动从
vendor/topthink/xxx/config/复制到项目config/目录下 - 打开
config/app.php,在'providers'数组中确认是否注册了对应服务提供者类,例如:think\captcha\CaptchaService::class;若没有,手动添加
常见问题与修复要点
装完不等于能用。很多“类找不到”“命令无效”的问题,其实卡在后续几步上。
- 服务提供者未注册:ThinkPHP 6/7/8 全靠 providers 数组加载扩展逻辑,漏了这步,再好的包也白装
-
自动发现被禁用:检查
composer.json是否有"dont-discover": ["*"],若有,删掉或改成具体排除项(如["laravel/framework"]) -
autoload 映射失效:改过命名空间或 autoload 配置后,可运行
composer dump-autoload强制刷新 -
国内源加速:如果提示 “could not find package”,大概率是网络问题。临时切阿里云镜像:
composer config -g repo.packagist https://mirrors.aliyun.com/composer/,装完再切回官方源 - 权限与路径陷阱:务必在项目根目录执行命令;runtime/ 目录不可写会导致日志、缓存、session 全部失效;public/ 不作 Web 根目录,首页都打不开
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











