Composer安装ThinkPHP需明确版本与环境:TP6要求PHP≥7.1并启用curl、mbstring、openssl、json扩展,TP8则需PHP≥8.1;必须用create-project拉取官方骨架而非仅framework包,并配置URL重写及自动加载。

Composer 安装 ThinkPHP 框架不是「一键下载即用」的过程,而是要明确版本、约束环境、处理自动加载与入口路径——直接运行 composer create-project 很可能生成一个无法访问的空壳项目。
确认 PHP 版本与扩展是否满足 TP 要求
ThinkPHP 6.x(当前主流)要求 PHP >= 7.1 且必须启用 curl、mbstring、openssl 和 json 扩展;TP 8.x(2024 年起逐步推广)则强制要求 PHP >= 8.1。若 php -v 显示为 7.4 或 8.0,却想装 TP 8,会卡在依赖解析阶段,报错类似:Conclusion: don't install topthink/framework v8.0.0。
- 执行
php -m | grep -E "curl|mbstring|openssl|json"验证扩展是否已加载 - Windows 用户注意:XAMPP/MAMP 默认禁用
mbstring,需手动编辑php.ini取消注释extension=mbstring - 使用 Docker 的话,基础镜像不能选
php:8.0-cli,应改用php:8.1-apache或更高
用 create-project 创建可运行的 TP 项目(非裸框架)
composer create-project 是唯一推荐方式,但必须指定带完整 Web 入口和配置的官方骨架(skeleton),而非直接拉 topthink/framework 包——后者只是核心库,没有 public/index.php、没有 app 目录结构,也无法响应 HTTP 请求。
- 安装 TP 6.1(LTS 稳定版):
composer create-project topthink/think tp6 --prefer-dist "6.1.*"
- 安装 TP 8.0(最新版):
composer create-project topthink/think tp8 --prefer-dist "8.0.*"
- 命令末尾的
--prefer-dist强制走压缩包安装,比--prefer-source快且不拉 Git 历史 - 生成的目录名(如
tp6)不能含中文或空格,否则 Composer 自动加载器可能失效
启动内置服务器前必须修改 public/.htaccess 或配置 Nginx
ThinkPHP 强依赖 URL 重写,public/ 是唯一允许 Web 访问的目录。直接双击打开 public/index.php 会报错 Undefined index: SERVER_NAME;用 php -S 启动时若未指定路由器文件,所有请求都 404。
立即学习“PHP免费学习笔记(深入)”;
- 本地快速验证:进入项目根目录后运行
php think run
(TP 6.1+ 内置命令,等价于php -S localhost:8000 -t public router.php) - 若手动用
php -S,必须显式传入 TP 提供的路由代理文件:php -S localhost:8000 -t public public/router.php
- Apache 用户确保
public/.htaccess存在且AllowOverride All已开启;Nginx 用户需在 server 块中加入:location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
vendor/autoload.php 不自动加载 app/ 下的类?检查 composer.json autoload 配置
TP 项目默认把 app/ 目录映射进 PSR-4 自动加载,但该配置藏在 composer.json 的 autoload 字段里。若你手动删过 app/ 或重命名了模块目录(比如改成 src/),Composer 就找不到控制器、模型类,报错 Class 'app\controller\Index' not found。
- 检查
composer.json中是否有如下段落:"autoload": {
"psr-4": {
"app\\": "app/"
}
} - 修改后必须执行
composer dump-autoload刷新映射,不能只改 JSON 就完事 - TP 8 开始支持多应用模式,若启用了
APP_MULTI,autoload 应改为"app\\" : "app/"+"app\common\\" : "app/common/"等多行
最常被跳过的动作是运行 composer dump-autoload 和漏配 Web 服务器重写规则——这两步一缺,页面就空白或 500,但错误日志里往往只显示「No input file specified」这类误导信息。











