Composer install卡住主因是镜像配置静默失效:必须严格满足repo.packagist(单数)、type值为composer、URL以HTTPS结尾且带/;验证需输出完整JSON,且须执行clear-cache并确认-vvv日志中请求域名匹配镜像地址。

composer install 卡住不是网络差,而是根本没走国内镜像——配错一个字符、漏掉斜杠、没清缓存,都会让配置静默失效。
composer config -g repo.packagist 命令写对了吗
这条命令极易写错却完全不报错,结果就是白配。必须同时满足三个硬条件:
-
repo.packagist不能写成repos.packagist(多一个s就被忽略) - 中间必须带
composer这个 type 参数:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/✅;漏掉composer就 fallback 到默认源 ❌ - URL 必须是 HTTPS + 末尾带斜杠:
https://mirrors.aliyun.com/composer/✅;https://mirrors.aliyun.com/composer❌(少斜杠会拼出 404)
验证是否生效:运行 composer config -g repo.packagist,输出必须是类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的完整 JSON。空、null 或仍是 https://packagist.org,说明没写进去。
换源后为什么还是卡在 Downloading
最常被跳过的一步:composer clear-cache 没执行。缓存里还存着旧的 packages.json 和元数据,Composer 会优先读缓存,哪怕源已改,它仍试图从旧地址拉校验信息,结果卡在 DNS 解析或 TLS 握手。
其他关键干扰项:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 项目级
composer.json里写了"repositories",会直接覆盖全局配置;可用composer config --list和composer config --list --global对比确认实际生效的是哪个 - CI/CD 或宝塔用
www用户运行,但composer config -g写的是root配置(路径为/root/.composer/config.json),www根本读不到;应切到对应用户下执行:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 用了过时插件如
hirak/prestissimo,它在 Composer 2.2+ 中不仅无效,还会干扰原生parallel-downloads
如何确认真走镜像而非 fallback
光看配置输出不够,要亲眼看到请求发到了镜像域名:
- 运行
composer install -vvv 2>&1 | grep "Downloading",日志里必须出现mirrors.aliyun.com或你配置的镜像域名;如果还有api.github.com或packagist.org,说明 zip 包仍在直连 GitHub(这不是镜像问题,得配ghproxy或改dist地址) - 执行
curl -I https://mirrors.aliyun.com/composer/packages.json,秒回HTTP/2 200才算靠谱;如果响应慢或超时,换腾讯云或华为云镜像试试 -
composer show laravel/framework -vvv也能触发元数据请求,观察日志中 URL 是否匹配镜像地址
vendor 已存在但 update 还是慢?可能是 autoload dump 在拖后腿
composer update 卡在 “Generating autoload files” 阶段,跟网络无关,是本地 I/O 开销。Composer 3.x 默认启用 classmap-authoritative 模式,每次 update 都强制扫描整个 vendor/ 目录生成 classmap。
开发环境几乎不需要这个模式:
- 关掉它:
composer config authorative false(注意拼写是authorative,不是authoritative) - 或删掉
composer.json里的"optimize-autoloader": true - 临时禁用 Xdebug:
php -d xdebug.mode=off $(which composer) update,它会让 autoload 生成慢 5–10 倍
真正容易被忽略的是:镜像只加速下载,不解决依赖求解(Resolving dependencies)卡顿——那阶段纯本地计算,和版本约束宽松度、PHP 内存限制、platform 配置是否匹配强相关。

















