根本原因是Composer默认连接境外packagist.org,国内直连常被防火墙重置TCP连接,导致下载超时、SSL握手失败或卡在Downloading;应全局配置清华或阿里镜像源:composer config -g repo.packagist composer https://packagist.proxy.tuna.tsinghua.edu.cn,并清缓存、删vendor与lock文件后重试。

为什么 composer install 卡在 Downloading... 或报 cURL error 7
根本原因是 Composer 默认走境外源(packagist.org),国内直连常被防火墙重置 TCP 连接,表现为下载超时、SSL 握手失败、或卡在某个包的 Downloading... 阶段。这不是 Composer 本身 bug,而是网络策略导致的连接中断。
实操建议:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先运行
composer config -g repo.packagist确认当前全局源;如果输出是{"type": "composer", "url": "https://packagist.org"},说明没切镜像 - 临时验证是否网络问题:用
curl -v https://packagist.org/packages.json看是否能通;若卡住或返回Failed to connect,基本可锁定为防火墙拦截 - 不要强行改
composer.json里的repositories—— 全局配置更安全,且不影响项目协作
如何永久切换到国内镜像源(推荐清华、阿里)
清华源和阿里源都支持完整同步 + HTTPS + 持续维护,优先选 https://packagist.phpcomposer.com(已停用)以外的活跃镜像。目前最稳的是清华源。
实操建议:
- 执行
composer config -g repo.packagist composer https://packagist.phpcomposer.com是过时写法,该域名已不可用 - 正确命令是:
composer config -g repo.packagist composer https://packagist.proxy.tuna.tsinghua.edu.cn - 如需回退,运行
composer config -g --unset repos.packagist - 注意:加
-g是全局生效;不加则只影响当前项目,容易漏配
遇到 Could not resolve host: packagist.org 或 DNS 污染怎么办
DNS 污染会导致即使切了镜像,Composer 内部仍尝试解析原始域名,尤其在某些企业网络或老旧路由器环境下常见。
实操建议:
- 手动刷新本地 DNS 缓存:
sudo dscacheutil -flushcache(macOS)、ipconfig /flushdns(Windows)、sudo systemd-resolve --flush-caches(Linux systemd) - 在
composer.json顶层加"repositories": [{"type": "composer", "url": "https://packagist.proxy.tuna.tsinghua.edu.cn"}],强制覆盖所有源(比全局 config 更彻底) - 若仍失败,检查是否公司代理强制注入了证书 —— 此时需额外配置
composer config -g cafile /path/to/company-ca.pem
私有包 + 镜像源混用时的认证与协议陷阱
切镜像后,如果项目依赖了 GitLab/GitHub 私有仓库或私有 Packagist,composer install 可能突然报 401 或 Cloning into ... Permission denied —— 因为镜像源不会代理私有地址,而 Composer 在并行请求时可能错误复用认证头。
实操建议:
- 把私有源显式声明在
composer.json的repositories数组里,并设"no-api": true(对 Git 类型)或指定"type": "package" - 避免用
https://github.com/xxx/yyy.git直接写 URL;改用{"type": "vcs", "url": "https://token:x-oauth-basic@github.com/xxx/yyy.git"}显式带凭据(token 要有repo权限) - 关键点:镜像源只加速公共包元数据和 ZIP 下载,不处理私有 Git clone;所以私有部分必须独立配置,且不能依赖镜像“自动转发”
repositories 顺序匹配,一旦顺序错或类型没标清,就会把私有请求发去镜像站,然后 404。

















