composer config -g repo.packagist 必须严格满足三要素才生效:键名必须为单数repo.packagist、第二参数必须显式写composer、URL须以https://开头且末尾带/,任一缺失均静默回退至packagist.org。

composer config -g repo.packagist 这条命令配对了才真正生效,否则 composer install 依然直连 packagist.org,不是慢,是大概率失败。
为什么 composer config -g repo.packagist 总是不生效
它不报错,但写进去的配置根本没被读到——常见原因就三个:
-
repo.packagist写成repos.packagist(多一个s),Composer 会静默忽略,查composer config -g repo.packagist输出为空 - 漏掉中间那个
composer参数:composer config -g repo.packagist https://mirrors.aliyun.com/composer/❌,必须是composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/✅ - URL 缺末尾斜杠:
https://mirrors.aliyun.com/composer❌ → 拼接路径出错,返回 404;https://mirrors.aliyun.com/composer/✅
验证是否写入成功,只看这一行输出:composer config -g repo.packagist。新版 Composer(2.2+)返回纯 URL 字符串,旧版返回 JSON 对象,但只要不是空、null 或 https://packagist.org,就算对。
宝塔、CI、Docker 里全局配置为啥不起作用
因为 composer config -g 写的是当前用户的 ~/.composer/config.json,而执行环境往往不是你登录的用户:
- 宝塔「一键部署」默认用
www用户跑命令,你在终端用root配的配置它根本看不到 - GitHub Actions 用
runner用户,CI 脚本里sudo composer config -g写进了root的配置,容器里实际运行的还是runner - Docker 构建时,
USER指令设的是非 root 用户,-g配置不会自动继承
临时解法:进宝塔终端,先切用户再配:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。长期更稳的做法是项目级配置。
立即学习“PHP免费学习笔记(深入)”;
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级配置怎么安全追加,不覆盖私有源
进项目根目录,运行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不带 -g)。这条命令会自动处理 composer.json 中的 repositories 字段:
- 如果原先是
"repositories": {}(空对象),它会转成数组并插入 packagist 条目 - 如果原先是
"repositories": [](空数组),它会往数组末尾追加,不破坏已有私有仓库 - 如果已有其他源(比如企业私有包地址),它不会清空,只补上
packagist项
千万别手动写 "packagist": false —— 这会关掉基础包校验,composer install 直接报错。
换镜像后 composer install 报 hash 不匹配或 package not found
镜像元数据和旧 composer.lock 不兼容,不是网络问题,是缓存残留:
- 删掉整个
vendor/目录 - 删掉
composer.lock - 再跑
composer install(不是update)
别试图保留旧 lock 文件——它记录的是官方源的哈希值,镜像返回的元数据结构一致但签名不同,强行复用必报错。临时验证镜像是否真在用?加 -vvv 看日志里出现的域名是不是 mirrors.aliyun.com 或 mirrors.tuna.tsinghua.edu.cn。


















