composer换源必须同时满足三条件:全局配置需带type参数(如composer),项目级repositories会完全屏蔽全局镜像,且必须清除缓存并确认执行用户与配置用户一致。

composer config -g repo.packagist 命令必须带 type 参数
不写 composer 这个 type 值,配置就等于没设。命令形如 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,其中第二个 composer 是仓库类型,不是命令名。漏掉它,Composer 会静默 fallback 到 https://packagist.org,composer config -g repo.packagist 看起来有输出,但实际请求仍走官方源。
项目级 repositories 会彻底屏蔽全局镜像
只要项目根目录的 composer.json 里存在 repositories 字段(哪怕只有一行 "packagist.org": false),全局配置就完全失效。这不是“优先级低”,而是直接跳过。常见于团队项目或 Laravel 官方脚手架模板,它们自带空 repositories 块。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 验证方式:进项目目录后运行
composer config repo.packagist(不加-g),如果输出为空或报错,说明项目配置已接管 - 临时绕过:用
--repository-url强制当次命令走镜像,例如composer install --repository-url=https://mirrors.ustc.edu.cn/composer/ - 永久修复:删掉
composer.json中整个repositories块,或改用composer config repo.packagist composer https://mirrors.aliyun.com/composer/覆盖写入(注意:该命令会重写整个repositories对象,私有源需手动保留)
换源后不清理缓存 = 白配
Composer 缓存的是元数据快照(如 p2/monolog/monolog.json),旧缓存里存的仍是官方源地址和 hash。即使镜像已生效,composer update 仍可能因校验失败报 Package not found 或卡在 Loading composer repositories。
- 必须执行
composer clear-cache,然后确认~/.composer/cache/(Linux/macOS)或%APPDATA%\Composer\Cache\(Windows)下无有效文件 - 验证是否真走镜像:加
-vvv参数跑一次安装,看到类似GET https://mirrors.aliyun.com/composer/p2/monolog/monolog.json的日志才算成功 - 别信
composer config -g输出——它只告诉你字段值,不告诉你 Composer 实际发了什么请求
CI/CD 或宝塔环境里 -g 配置常不生效
全局配置写在 ~/.composer/config.json,但“谁在跑命令”决定读哪个路径。宝塔后台以 www 用户运行,CI 构建容器常用 runner 用户,而你本地终端可能是 root 或普通用户。三者 ~ 指向不同目录,配置互不可见。
- 解决方案:在 CI 脚本或宝塔部署钩子里,先用目标用户身份执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 更可靠做法:改项目级配置,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g),它会自动写入当前composer.json的repositories字段,提交 Git 后所有环境一致 - 检查是否被环境变量覆盖:
env | grep COMPOSER_REPO,如有COMPOSER_REPO_PACKAGIST,需先unset COMPOSER_REPO_PACKAGIST










