根本原因是默认连接境外 packagist.org 遭遇 dns 污染、tls 握手超时、ipv6 解析 fallback 和镜像未生效三重阻塞;须先升级 composer ≥ 2.2、全局切阿里云镜像、清缓存、禁用 ipv6、启用并行下载,安装后执行 composer dump-autoload -o 并修正 think 文件换行符为 lf。

在 Windows 10 或 Windows 11 上用 composer create-project topthink/think 安装 ThinkPHP 6.0 时,常卡在 “Downloading xxx”、反复重试或停在 99%,根本原因是默认连接境外 packagist.org,遭遇 DNS 污染、TLS 握手超时、IPv6 解析 fallback 和镜像未生效三重阻塞,不是你本地网速问题。
第一步:强制切换国内镜像并清空缓存
执行命令前先确认 Composer 版本 ≥ 2.2(运行 composer --version),低于则先升级:composer self-update。
全局切换为阿里云镜像源:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证是否写入成功:composer config -g repo.packagist,输出必须是完整 URL 字符串,不是 null 或空行。
【不清理缓存=白换镜像】旧缓存中可能含已失效的 packagist.org 元数据,导致后续命令仍尝试连接海外地址,必须立即执行:composer clear-cache。
第二步:禁用 IPv6 解析 + 启用并行下载
Windows CMD 中一次性生效(仅本次命令):set COMPOSER_NO_IPV6=1 && composer create-project "topthink/think:^6.3.0" tp6-demo --no-scripts --no-autoloader
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
这一步跳过所有 IPv6 地址解析,避免几秒级等待后才 fallback 到 IPv4;同时 --no-scripts 防止框架自动执行耗时的 post-autoload-dump,--no-autoloader 推迟 autoload 生成到安装完成后再手动优化。
若需永久生效 IPv4 强制策略(推荐 CI/CD 或多项目环境):composer config -g use-ipv4 true,注意该配置仅对 Composer 2.2+ 有效。
启用并发下载(全局设置一次即可):composer config -g parallel-downloads 10。值设为 10 是实测平衡点——设太高(如 20)易触发临时文件竞争错误,设太低(如 3)提速不明显。
第三步:安装完成后必须补的两件事
进入项目目录:cd tp6-demo
生成优化版自动加载映射:composer dump-autoload -o。不加 -o 会保留 PSR-4 动态查找,TP6 启动时每个类都要扫描路径,慢 3~5 倍。
修复 Windows 下可执行权限:notepad think,将文件末尾的 \r\n(CRLF)手动改为 \n(LF),保存。否则 php think 执行时 shebang 行(#!/usr/bin/env php)被忽略,直接报错“无法识别的命令”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










