正确命令是composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,必须严格满足:-g不可省略、键名为单数repo.packagist、第二参数为composer类型值、url以https://开头且末尾带斜杠/,缺一即静默回退官方源。

composer config -g repo.packagist 命令必须写对三个硬性参数
配不成功不是网络问题,是命令漏了关键要素——Composer 2.x 会静默 fallback 到 packagist.org,连报错都没有。
-
-g不能省:缺了就只改当前项目composer.json,换目录或新开终端就失效 -
repo.packagist是唯一合法键名:写成repos.packagist、packagist.org或大小写混用(如Repo.Packagist)都会写进无效字段 -
composer是必需的type值:不是可选参数,也不是注释;漏掉它,Composer 直接忽略整条配置 -
https://mirrors.aliyun.com/composer/必须带末尾斜杠/:少一个就会拼出/composerpackages.json,返回 404 - URL 必须用
https://:HTTP 地址在 Composer 2.2+ 中被默认拒绝
正确执行:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证镜像是否真正生效,别信“配完了”这种感觉
运行 composer config -g repo.packagist,输出必须是完整 JSON 对象:
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
如果返回空、null、报错,或者只有 URL 没有 type 字段,说明没写对。别跳过这步——90% 的“换源失败”都卡在这儿。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Windows 用户改完需重启终端,否则环境变量和配置缓存不会刷新
- CI 流水线里常用
www-data或runner用户执行命令,而-g配的是当前登录用户,权限不一致就等于白配 - 某些项目
composer.json里写了"packagist.org": false,会直接屏蔽全局镜像,得手动删掉或改成true
为什么换了镜像 still 卡在 “Loading composer repositories”?
不是镜像不可用,是 Composer 还在读旧缓存或旧 lock 文件。
- 先清缓存:
composer clear-cache - 删掉项目下的
vendor/和composer.lock - 再跑
composer install -vvv,看日志里出现的是mirrors.aliyun.com还是packagist.org - 如果日志里仍有
packagist.org,说明配置没生效,或项目级repositories字段覆盖了全局设置
注意:composer update 不会重新加载镜像配置,它只基于现有 composer.lock 解析依赖;要彻底重走镜像流程,必须删 lock 文件后重装。
HTTPS 被企业防火墙 TLS 内容审查拦截怎么办
现象是 curl -vI https://mirrors.aliyun.com/composer/packages.json 卡在 TLS handshake 或报 certificate verify failed,但浏览器访问正常——说明防火墙在解密重签 HTTPS 流量。
- 不能关证书校验(比如设
secure-http false或COMPOSER_CAFILE=/dev/null),那等于把供应链钥匙交给中间人 - 正确做法:导出企业根证书(PEM 格式),再执行
composer config -g cafile /path/to/company-ca.crt - 同时伪装 UA:设环境变量
COMPOSER_USER_AGENT="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",避免被规则库识别为开发工具 - 镜像 URL 必须带
type和结尾/,否则 HTTPS 代理链会断开,请求仍 fallback 到官方源
最易忽略的一点:很多团队以为换源就万事大吉,却没处理 dist 下载直连 GitHub 的二次拦截——那些 ZIP 包地址写死在包元数据里,镜像只管 packages.json,不管实际 ZIP 下载。这点得靠 composer config -g repos.packagist ... 或启用国内 CDN 镜像服务来补全。










