Composer config -g repo.packagist 没生效是因为未同时满足四个硬性条件:键名必须为单数 repo.packagist(不能多 s 或写成 packagist.org)、第三个参数 composer 是必填 type 值、URL 必须以 / 结尾且为 HTTPS、命令必须带 -g 参数;任一错误均静默回退至 packagist.org。

composer config -g repo.packagist 为什么没生效
这条命令写错一个字符,Composer 就会静默回退到 https://packagist.org,不报错也不提示。它必须同时满足四个条件:键名是 repo.packagist(不能多 s、不能写成 packagist.org),第三个参数 composer 是 type 值(不是注释),URL 必须以 / 结尾(如 https://mirrors.aliyun.com/composer/),且必须带 -g 参数。
验证是否成功:运行 composer config -g repo.packagist。输出应为完整 JSON 或纯 URL;若为空、null、或仍是 https://packagist.org,说明没写对。
- Windows 用户用普通 CMD 可能因权限失败,换管理员 CMD 再试
- macOS/Linux 用户混用
--global和-g可能导致配置写入位置错乱 - 某些旧版 Composer(2.2+)已废弃该键名,需改用
repositories.packagist.org.type和repositories.packagist.org.url
composer install 失败时怎么拿到真实错误
composer install 本身不抛 PHP 异常,脚本钩子(如 post-install-cmd)在失败时根本不会执行。你唯一能捕获错误的地方是 shell 层——靠退出码和 stderr 输出做判断。
别在 PHP 脚本里 try/catch composer install,它压根没被 PHP 执行。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 加
--verbose或-vvv查看详细日志,重点关注Downloading行的域名和cURL error类型 - 用 shell wrapper 捕获 stderr:重定向
2>"$stderr"到临时文件,再读取内容上报或记录 - CI 流水线中务必检查 exit code,
&&或||拼接会吞掉原始状态码,导致误判成功
镜像配好了还是 Connection refused 或 redirect 循环
这类问题 90% 不是 Composer 配置错了,而是网络链路或镜像服务自身异常。先确认请求是否真发出去了:
运行 curl -I -L https://mirrors.aliyun.com/composer/packages.json。如果也卡住或循环跳转,说明问题出在 DNS、防火墙、代理或镜像源路径格式上,和 Composer 无关。
- URL 缺尾部
/是 redirect 循环最常见原因:比如https://mirrors.aliyun.com/composer会被 301 到/composer/,但 Composer 不自动补,下次又发错地址 - 企业网络可能劫持 HTTPS 流量,把
https://重定向到http://,而 Composer 默认不跟 HTTP 跳转 - 杀毒软件(如火绒、360)或 Windows Defender 防火墙常拦截 Composer 的出站连接,临时关闭可快速验证
删了 vendor 重装还是慢或失败
镜像只加速 HTTP 元数据下载(packages.json 等),不解决依赖解析、Git 克隆、PHP 内存不足等问题。很多“慢”其实卡在别的环节:
看 -vvv 日志:如果卡在 Resolving dependencies,那是本地约束太复杂,和镜像无关;如果出现 GithubRateLimitException 或 403,说明有包硬编码 GitHub URL,需配 github-oauth.github.com Token;如果卡在 Cloning,那是 Git 自己超时,得调 git config --global core.sshCommand "ssh -o ConnectTimeout=30"。
- 必须执行
composer clear-cache:旧缓存可能仍指向packagist.org,重试时复用失败快照 - 项目级
composer.json中只要存在"repositories"字段(哪怕空对象{}),就会完全屏蔽全局镜像 -
composer.lock记录的是原始源地址,不清掉它,install仍按老源解析,建议删 lock 后重生成

















