Composer默认直连packagist.org,国内用户需配置镜像;正确命令为composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,且必须删vendor和composer.lock后执行install才能生效。

Composer 默认不走任何镜像,它直连 packagist.org —— 这是硬编码在源码里的行为,不是配置项。国内用户遇到的绝大多数 Connection timed out、Resolving dependencies 卡死、Could not resolve host,根源都在这里。
composer config -g repo.packagist 命令必须写对三个关键部分
这条命令不是“试试看”,少一个就静默失效,且不报错:
-
repo.packagist是唯一被识别的键名(注意:不是repos.packagist.org,也不是repositories.packagist) -
composer是强制指定的type值,不能省略,也不能写成vcs或留空 - 镜像 URL 必须以
/结尾,例如https://mirrors.aliyun.com/composer/;漏掉斜杠会导致请求路径拼成/composer/packages.json而 404
正确执行后,composer config -g repo.packagist 应输出完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。如果返回空、null 或报错,说明没写对。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
为什么删 vendor 和 composer.lock 是必须步骤
composer.lock 文件里存的是每个包的 dist.url,它记录的是下载地址,不是仓库配置。一旦 lock 文件存在,Composer 就按这个 URL 直接下载,完全忽略当前 repositories 设置。
- 只运行
composer update不行——它可能沿用旧 lock 里的官方 URL - 必须手动删除
vendor/和composer.lock - 再执行
composer install,才能触发全新解析 + 新镜像拉取 - 验证是否真走镜像:加
-vvv看日志,搜索GET https,确认域名是mirrors.aliyun.com而非packagist.org
项目级配置比全局更可靠,但写法有陷阱
进项目目录后执行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不带 -g),会直接改写 composer.json 的 repositories 字段。
- 这不是“追加”,而是全量替换——如果项目原本已有私有源(如 Git 类型),会被清空
- 安全做法是手动编辑
composer.json,在repositories对象里加一项:"packagist": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 同时确保根节点有
"packagist.org": false(防止 Composer 自动注入默认源) - Git 可追踪、团队一致、CI 可复现,比全局配置更可控
最常被忽略的一点:配置写进去了 ≠ 实际请求走镜像。DNS 污染、公司代理、composer.json 里硬编码的 repositories、甚至 http_proxy 环境变量,都可能绕过你精心设置的镜像。验证永远要落在 -vvv 日志里的真实 HTTP 请求上,而不是 config 命令的输出。

















