正确写法必须为composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,三要素缺一不可:键名repo.packagist、type值composer、url以/结尾的https地址,否则静默回退官方源。

composer config -g repo.packagist 命令必须同时指定 type 和 url
直接写 composer config -g repo.packagist https://mirrors.aliyun.com/composer/ 会失败——因为 Composer 要求这个配置项必须是完整对象,type 字段不能省。漏掉 composer 这个 type 值,新版 Composer(2.5+)会完全忽略该配置,回退到官方源;旧版则可能静默 fallback,导致你以为生效了,实际还是慢。
正确写法只有一条:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
repo.packagist是固定键名,写成repos.packagist(多一个 s)或packagist.org都无效 -
composer是 type 值,不是随便起的别名,也不是可选参数 - URL 必须以
https://开头,且末尾带/,少斜杠在某些版本里会拼出https://mirrors.aliyun.com/composer/packages.json这种错误路径
自建代理服务(如 cntlm/px)必须监听 127.0.0.1,且 http-proxy 和 https-proxy 都要配
公司用 NTLM 代理时,Composer 原生不支持认证,设 http-proxy 或 https-proxy 单独一个都没用——它会卡在 407 Proxy Authentication Required 或直接超时。
可行做法是本地起中转代理,比如 cntlm 监听 127.0.0.1:3128,再让 Composer 连这个地址:
- 执行两条命令(缺一不可):
composer config -g http-proxy http://127.0.0.1:3128composer config -g https-proxy http://127.0.0.1:3128 -
https-proxy的值仍必须是http://开头,填https://或省略协议头会静默失效 - 验证是否生效:
composer config -g --list | grep -E "(http|https)-proxy",输出应有两行且格式合法
镜像源和自建代理不能混用逻辑:先走代理,再连镜像
很多人以为“配了镜像就不用代理”,其实不是。镜像地址(如 https://mirrors.tuna.tsinghua.edu.cn/composer/)仍是 HTTPS 地址,Composer 发起请求时仍需 TLS 握手——如果网络策略强制所有 HTTPS 流量过公司代理,那即使用了镜像,没配 https-proxy 一样连不上。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
典型链路是:composer → https-proxy → 公司 NTLM 代理 → 清洗后转发 → 清华镜像服务器。所以:
- 镜像 URL 必须可被代理访问(比如不能是内网地址)
- 代理本身要能解析镜像域名(检查
nslookup mirrors.tuna.tsinghua.edu.cn是否通) - 若镜像返回
403 Forbidden,大概率是代理拦截了 User-Agent 或 Referer,需在中转代理里加白名单或伪造头
项目级配置比全局更可靠,尤其在 CI 或多用户环境
全局配置写在 ~/.composer/config.json,但 CI 流水线常以 www 或 runner 用户运行,读不到你个人用户的配置;phpstudy、宝塔等面板也常切换执行用户,导致镜像失效。
项目级配置写进 composer.json,所有人拉代码后行为一致:
- 运行:
composer config repo.packagist composer https://mirrors.ustc.edu.cn/composer/(注意去掉-g) - 它会自动往
composer.json的repositories字段插入"packagist"键,不会覆盖已有私有源 - 如果已有
"repositories": {},命令会 merge;如果已有其他仓库,确保它们仍在数组里,否则那些包不可见 - 提交
composer.json后,composer install行为完全可复现,composer.lockhash 也稳定
真正容易被忽略的是:换源后首次 composer install 若报 Signature mismatch 或校验失败,不是镜像问题,而是缓存残留——删掉 vendor 和 composer.lock 再重装最稳妥。










