Composer安装ThinkPHP6失败主因是Web根目录未设为public/、vendor/autoload.php缺失、.env未配置或runtime不可写,而非命令错误;需确认目录结构、服务器配置、PHP扩展及环境文件规范。

Composer 安装 ThinkPHP 6 成功率低,多数不是因为命令写错,而是环境或配置没对齐——composer create-project 能跑通,不代表 TP6 就能正常响应请求。
为什么 composer create-project topthink/think 后访问 500 或白屏
常见错误现象:Class 'think\Container' not found、require(): Failed opening required 'vendor/autoload.php',或 Nginx 报 Primary script unknown。
根本原因不是没装成功,而是 Web 服务器没指向 public/ 目录,或 vendor/autoload.php 没生成(比如用了国内镜像但缓存损坏)。
- 必须确认当前目录下有
composer.json且vendor/已完整解压(ls vendor/topthink/think应有src/和composer.json) - Web 根目录必须设为
public/,不是项目根目录;Apache 需启用mod_rewrite,Nginx 必须配置try_files $uri $uri/ /index.php?$query_string; - 如果用
php -S本地测试,得进public/目录再执行:php -S localhost:8000 router.php
composer create-project 的参数陷阱
默认命令不指定版本,可能拉到 dev-main 或 RC 版本,导致依赖冲突或文档不匹配。
立即学习“PHP免费学习笔记(深入)”;
TP6 官方稳定分支是 v6.1.*(截至 2024 年主流维护线),别直接用 topthink/think 不带版本号。
- 推荐写法:
composer create-project "topthink/think:^6.1" myapp(双引号防 shell 解析特殊字符) - 如果网络卡顿,先换源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,再运行安装 - 若提示
ext-openssl missing或mbstring报错,说明 PHP 缺扩展,不是 Composer 问题——检查php -m | grep -E 'openssl|mbstring'
安装后 env 文件和权限的隐形雷区
TP6 启动时会读 .env,但默认不生成该文件,也不报错,只静默 fallback 到默认配置——结果数据库连不上、调试关闭、路由不生效,你还在查代码。
同时,runtime/ 目录必须可写,否则日志、缓存、模板编译全失败,页面空白但无错误提示。
- 手动复制
env.example为.env:cp .env.example .env,然后填好APP_DEBUG=true和数据库配置 - 确保
runtime/可写:chmod -R 755 runtime/(Linux/macOS),Windows 下注意 IIS 或 PHP-CGI 用户是否有写权限 - 别在
.env里写中文注释或空行——TP6 的Env类解析器会中断加载,后续变量全失效
真正卡住人的,往往不是「怎么装」,而是装完发现 public/index.php 里那行 require __DIR__ . '/../vendor/autoload.php'; 找不到路径,或者 .env 里一个等号前后多打了空格。这些点不报错,只让整个框架静音失效。











