最稳的 composer 镜像设置是执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,需严格满足四要素:-g(全局)、单数 repo.packagist、type 值为 composer、url 末尾带斜杠;并同步配置 parallel-downloads 10 和 prefer-dist true,且必须执行 composer clear-cache 清除旧缓存。
立即进入“composer学习资源速领!☜☜☜☜☜点击进入”;

装完 composer 后不配镜像,第一次 install 就会卡死
刚执行 curl -sS https://getcomposer.org/installer | php 并把 composer.phar 移到 /usr/local/bin/composer,不代表就能用了。默认走的是 packagist.org(境外源),国内直连大概率超时或极慢,composer install 卡在 Downloading xxx... 是常态。
必须立刻执行这三步:
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云镜像最稳) -
composer config -g parallel-downloads 10(Composer 2.2+ 才支持,并发下载提速明显) -
composer config -g prefer-dist true(强制走压缩包而非 Git clone,省时间、省带宽)
做完别忘了 composer clear-cache——旧缓存里还存着 packagist.org 的元数据,不清理,镜像配置等于没生效。
跳过 SHA 校验只适合 CI/CD,开发机别偷懒
用 curl -sS https://getcomposer.org/installer | php 直接执行安装,确实快,但它绕过了 SHA-384 签名校验。这不是“省事”,是主动放弃完整性验证。
适用场景仅限:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Docker 构建阶段(基础镜像可信、网络链路可控)
- CI 流水线(如 GitHub Actions、GitLab CI,环境隔离且可审计)
- 内网部署(无外网访问,且安装脚本已预置校验逻辑)
开发机上建议走完整流程:php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" → 校验 SHA → 执行 → 清理临时文件。官方当前 SHA-384 值仍是 e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a,硬编码比每次查文档更可靠。
全局配置 ≠ 项目免检,这些字段会悄悄覆盖你设的 prefer-dist
即使 composer config -g prefer-dist true 返回 true,某些项目仍会 fallback 到 source 模式,原因很具体:
-
composer.json里写了"prefer-source": true—— 它优先级高于全局设置,删掉即可 - 依赖项来自私有 GitLab/GitHub 仓库,但没在
repositories中声明"dist"地址,prefer-dist会直接报错Could not find a matching version of package xxx - 用了
path类型仓库,例如"monolog/monolog": {"type": "path", "url": "../monolog"}—— 这类本地路径包天生不支持 dist,也不参与并发下载
排查方法很简单:composer install -vvv 看日志里是否出现 Downloading from dist 或 Cloning from source;前者才是你想要的路径。
验证配置是否真生效,别只信命令返回值
执行 composer config -g repo.packagist 返回地址,不代表请求真走那儿了。真实链路可能被代理、DNS 污染或公司防火墙劫持。
最靠谱的验证方式是触发一次最小依赖拉取:
- 新建空目录,
composer init -n生成最小composer.json - 运行
composer require monolog/monolog:^3.0 --no-dev --dry-run - 观察输出中是否有
mirrors.aliyun.com字样,以及是否出现Downloading (100%)而非长时间等待
如果卡在 Loading composer repositories with package information 超过 10 秒,说明镜像没真正生效——这时候得查系统 DNS、/etc/hosts、甚至公司出口网关策略。










