当前真正可用的composer镜像只有阿里云、腾讯云新地址和清华源;需用-vvv验证实际请求域名,确保url正确结尾并清除缓存;项目级配置优先于全局,且会屏蔽全局镜像。

composer install 卡在 Loading composer repositories 或 Downloading,不是网络差,是没走对镜像——当前(2026年7月)真正可用、全量同步、HTTPS 支持良好的只有三个:阿里云、腾讯云新地址、清华源。其他多数已停服或返回 404。
确认当前镜像是否真生效
别只信 composer config -g repo.packagist 输出了 URL,要看 Composer 实际发请求时连的是谁:
- 运行
composer install -vvv,盯住第一行日志:必须出现Downloading https://mirrors.aliyun.com/composer/packages.json(或对应镜像域名),否则就是 fallback 到packagist.org - 手动
curl -I https://mirrors.aliyun.com/composer/packages.json,返回200 OK才算通;若 301、超时或 DNS 失败,说明镜像地址写错,或本地网络策略拦截了该域名 - 检查项目根目录
composer.json是否有"repositories"字段——只要存在(哪怕空数组"repositories": []),全局配置就失效,优先级更高
全局换源必须写对这三处
命令 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 看似简单,但漏掉任意一项都会静默失败:
-
repo.packagist是固定键名,写成repos.packagist(多 s)、packagist.org或mirror都无效 - 中间的
composer是 type 值,不能省略,也不能换成https或git - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,少斜杠会拼出/composerpackages.json导致 404
设完立刻执行 composer clear-cache ——缓存里还存着旧元数据,不清理,Composer 仍会尝试从 packagist.org 拉校验信息,卡在 TLS 握手或 DNS 解析。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
卡在 Resolving dependencies 不是镜像问题
这时 PHP 正在暴力回溯依赖版本组合,和镜像无关。常见诱因:
-
composer.json里写了宽泛约束,比如"^1.0 || ^2.0"或引用了"dev-main"私有包 - 默认内存限制(128M 或 1.5GB)不够,尤其含大量
require-dev时,临时加大:php -d memory_limit=-1 composer install - Xdebug 启用中,会让 SAT 求解慢 5–10 倍,可临时禁用:
php -d xdebug.mode=off $(which composer) install -
composer.lock里记录的是原始packagist.org的 dist URL,换源后需刷新:composer update --lock
项目级配置更适合 CI 和团队协作
全局配置在 Docker、宝塔或 CI 流水线中常因用户权限失效(如 www 用户读不到 root 的 ~/.composer/config.json),项目级更可靠:
- 进项目根目录,执行:
composer config repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/(注意不加-g) - 它会自动向
composer.json的repositories对象追加 packagist 条目,不会覆盖已有私有源 - 若
composer.json已有"repositories": []数组结构,别手动覆盖,改用命令追加,否则私有包源会丢失
这个配置可提交 Git,新人拉代码后自动生效,composer.lock 哈希也一致——但要注意,一旦写入 repositories,它就完全屏蔽全局镜像,后续所有换源操作都得改这里。










