ThinkPHP 6 安装失败主因是镜像源失效、缓存污染或配置未生效;应先切阿里云镜像、清缓存、验证diagnose输出,用create-project指定版本(如^6.1),确保Web服务器root指向public目录且入口正确引入autoload.php。

ThinkPHP 6 安装失败,90% 不是框架问题,而是 Composer 镜像源失效、缓存污染或配置未真正生效。别重装 PHP 或删重试十次,先切镜像、清缓存、验证真实请求路径。
composer create-project 卡在 Downloading 或报 “could not find package”
这不是网络断了,是当前镜像源没同步、已停用,或 Composer 静默 fallback 到了 https://packagist.org/。Windows 用户尤其常见于 Git Bash 下执行导致 proc_open 失败,但错误表现一样——卡住或报红字。
- 立刻中断:按
Ctrl+C停掉当前命令 - 删残留:手动删除当前目录下的
vendor/和composer.lock - 清缓存:
composer clear-cache - 验证镜像是否真生效:
composer diagnose,盯住 “Repo:” 行,域名必须是mirrors.aliyun.com;再跑composer show -p -vvv | head -5,第一行 URL 必须含你配的镜像地址 - 若仍无效,说明全局配置键名过时(Composer 2.2+ 已弃用
repo.packagist):改用composer config -g repositories.packagist.org composer https://mirrors.aliyun.com/composer/(注意末尾斜杠不能少)
阿里云镜像突然失效?快速切腾讯云/华为云备用源
阿里云镜像虽稳,但新包发布后几分钟内可能未同步,或周末 CDN 回源延迟;腾讯云部分节点晚高峰返回 503;华为云域名在某些企业防火墙里被拦截。所谓“备用”,只能人手动切,Composer 不支持自动 fallback。
- 临时切腾讯云(不改全局):
composer create-project --repository=https://mirrors.cloud.tencent.com/composer/ topthink/think:^6.1 myapp - 临时切华为云:
composer create-project --repository=https://mirrors.huaweicloud.com/composer/ topthink/think:^6.1 myapp - 中科大源适合教育网:
composer create-project --repository=https://packagist.mirrors.ustc.edu.cn/ topthink/think:^6.1 myapp - 切完立刻验证:
composer install -vvv,看日志首行是否命中你指定的备用 URL
安装看似成功,但访问 public/index.php 报 Class 'think\App' not found
这和镜像无关,是自动加载根本没启动。最常踩的坑是:Web 服务器 root 指向了项目根目录,而不是 public/;或者 public/index.php 里第一行 require __DIR__ . '/../vendor/autoload.php'; 被误删或路径错位。
立即学习“PHP免费学习笔记(深入)”;
- 进项目根目录,手动运行:
php -r "require 'vendor/autoload.php'; echo 'OK';",输出 OK 才说明 autoload 正常 - Nginx/Apache 配置中,
root必须设为/path/to/myapp/public,不是/path/to/myapp - 检查
public/index.php第一行是否为require __DIR__ . '/../vendor/autoload.php';,且vendor/autoload.php文件真实存在 - Windows 下若用 WSL,还需确认
runtime/所在文件系统挂载为可执行(否则首次写缓存失败,但不会影响 autoload 加载)
为什么设了镜像还失败?三个容易被忽略的细节
镜像只是加速手段,真正卡住人的往往是权限、缓存、命令语法这三处。设完镜像别急着装,先 composer --version 和 composer clear-cache 过一遍,比反复重试快得多。
-
composer create-project是唯一正确方式,composer require topthink/think在空目录下必失败——TP6 不支持这种引入方式 - 版本号必须显式指定:
topthink/think:^6.1或@v6.3.0,漏掉会拉到 TP5 或 TP8 的不稳定快照 - 目标文件夹不能非空:已有同名目录时,
create-project会静默退出,不报错也不覆盖,看起来“成功”实则什么都没做



















