composer-setup.php仅下载验证composer.phar,不读镜像配置;安装后必须立即执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/并清缓存、删vendor与composer.lock才能确保后续依赖安装正常。

composer-setup.php 本身不读镜像配置
安装脚本 composer-setup.php 只负责下载并验证 composer.phar 二进制文件,全程不触碰任何 Composer 配置(包括 repo.packagist),也不走包仓库逻辑。它从 https://getcomposer.org/installer 拉取的是可执行文件本身,和镜像源无关。
装完立刻配镜像才是关键动作
脚本执行完后,composer 命令就可用,但此时仍用默认官方源。必须紧接着运行配置命令,否则后续所有 install、update 都会慢:
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/—— 全局生效,但依赖当前用户HOME环境变量正确 -
composer config repo.packagist composer https://mirrors.aliyun.com/composer/—— 项目级,写入当前目录composer.json的repositories字段,Git 可追踪
漏掉这步,等于白装。很多 CI 脚本只跑 php composer-setup.php 就结束,结果构建时还在原地等超时。
为什么不能在 setup 阶段传参指定镜像
官方 composer-setup.php 不支持任何镜像参数或环境变量注入。它硬编码了 https://getcomposer.org/download/ 这个地址拉取 phar 文件。想“一步到位”,只能靠后续命令补上,比如 Dockerfile 里写成:
立即学习“PHP免费学习笔记(深入)”;
php composer-setup.php --filename=composer.phar --install-dir=/usr/local/bin && \ php /usr/local/bin/composer.phar config -g repo.packagist composer https://mirrors.aliyun.com/composer/
注意:第二行必须用 php /usr/local/bin/composer.phar 调用,不能直接用 composer,否则在非 PATH 环境下会失败。
镜像配置对首次 install 的影响是间接的
换源不会让 composer-setup.php 变快,但它决定了接下来第一次 composer install 能不能顺利跑通:
- 没配镜像 → 请求发往
packagist.org→ 国内大概率超时或卡在Loading composer repositories - 配错格式(比如少斜杠、漏
composertype)→composer config -g repo.packagist输出为空或null→ 实际仍走官方源 - 配对但没清缓存 → 缓存里还存着旧的
packages.json,Composer 会先读缓存再校验远程,可能反复尝试连不上官方源
所以装完 composer-setup.php 后,三件事要一起做:配镜像、composer clear-cache、删掉旧 vendor/ 和 composer.lock(如果存在)。



















