镜像配置需同时满足键名repo.packagist、type为composer、url以https://开头且结尾带斜杠;项目级repositories会覆盖全局配置;dns解析失败会导致resolving dependencies卡住;换源后必须clear-cache并用curl验证。

镜像配置是否真正生效?
很多人执行了composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/就以为完事了,但composer config -g repo.packagist输出仍是https://packagist.org或空值——说明根本没写进去。关键硬性条件必须同时满足:
- 键名必须是
repo.packagist(不是repos.packagist、repositories或packagist.org) -
type值必须显式指定为composer,不能省略 - URL 必须以
https://开头且末尾带斜杠:https://mirrors.aliyun.com/composer/✅,少斜杠会拼出非法路径导致 404 - 执行后必须立刻验证:
composer config -g repo.packagist输出应为完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
若输出不对,直接删掉重来,别信“命令没报错=成功”。
项目级 repositories 是否覆盖了全局镜像?
只要项目根目录的 composer.json 里存在 "repositories" 字段(哪怕内容是 {}、{"packagist.org": false} 或只有一行注释),Composer 就会彻底忽略全局 repo.packagist 配置,强制走默认源。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查方式:
composer config --list | grep repositories,看repositories.packagist.url是否为你设的镜像地址 - 临时验证:运行
composer config --unset repositories(不加-g),再试composer update - 若需保留私有源,不要全删
repositories,而是把 packagist 条目单独改成镜像:"packagist": false→ 改为"packagist.org": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
卡在 Resolving dependencies 是 DNS 问题,不是换源能救的
这一步 Composer 只做域名解析(查 mirrors.aliyun.com 的 IP),不发 HTTP 请求、不读代理、不认 http.timeout。哪怕镜像 URL 写对了,DNS 解析失败照样卡住。
- 用
dig mirrors.aliyun.com @114.114.114.114测试——若超时或无 IPv4 返回,说明本地 DNS 被污染或不可用 - 临时换 DNS:
/etc/resolv.conf加nameserver 8.8.8.8(Linux/macOS),Windows 在网络适配器手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误将mirrors.aliyun.com指向了127.0.0.1 - 用手机热点直连测试——很多企业网/校园网会屏蔽镜像域名,但热点通常通畅
Downloading 卡住才该调超时和代理
只有到这一步,Composer 才真正发起 HTTP 请求,此时 http.timeout 和 http.proxy 才起作用。注意几个易错点:
- 全局延长超时:
composer config -g http.timeout 600(单位秒),但 CI 环境更推荐项目级配置:"config": {"http.timeout": 600}写进composer.json - 代理必须用
http.proxy(不是https.proxy或其他别名),带认证时 URL 格式为http://user:pass@127.0.0.1:8080,密码含特殊字符需 URL 编码 - 换源后必须执行
composer clear-cache,否则旧缓存仍复用失败地址 - 最可靠的验证方式是
curl -I https://mirrors.aliyun.com/composer/packages.json,看到HTTP/2 200才算镜像源本身可访问
镜像配置本身只是元数据加速,不影响 ext-xxx 类扩展的 dist 包下载——那些仍可能走 GitHub 原始地址,得靠阿里云插件启用 extra.enable-dist-url-rewrite 才真正重写,这点常被忽略。










