composer install/update 卡在 downloading 的根本原因是 packagist.org 国内访问不稳定,推荐永久切换为阿里云镜像源:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。

Composer install/update 时卡在 downloading 状态
根本原因通常是默认源 packagist.org 在国内访问不稳定,DNS 解析慢或 TCP 连接超时。Composer 默认的 timeout 是 300 秒(5 分钟),但实际网络抖动可能让单个包下载反复失败重试,最终卡住不动。
- 临时解决:运行前加环境变量
COMPOSER_PROCESS_TIMEOUT=0(禁用进程超时)+COMPOSER_HOME_TIMEOUT=0(禁用 HTTP 超时),但治标不治本 - 推荐做法:换国内镜像源,比如阿里云或腾讯云的 Packagist 镜像,它们支持 HTTPS、同步及时且带 CDN 加速
- 注意:不要只改
composer.json里的repositories,那仅对当前项目生效;全局配置更稳妥
如何永久切换为阿里云镜像源
执行这条命令即可全局替换(适用于 Composer 2.x 和 1.10+):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证是否生效:运行 composer config -g repo.packagist,输出应为上述 URL。如果提示 Could not find package ...,说明配置写入失败,常见原因是 COMPOSER_HOME 路径权限不足或被自定义过——此时可手动编辑 ~/.composer/config.json,确保 repositories 下有对应条目。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 切勿用
composer config -g repositories.packagist.type composer这类分步写法,容易覆盖原有结构 - 如果公司内网有私有仓库,建议把阿里云源设为
packagist的代理,而非完全替换,避免私有包解析失败 - 镜像源不是万能的:部分 GitHub 托管的包仍需直连(如
vcs类型仓库),此时需单独配置 Git 协议或启用 SSH
下载卡在 git clone 或 github.com 的场景
Composer 遇到 "type": "vcs" 的包(尤其是 GitHub 上的 dev 分支)时,会调用系统 git 命令克隆,而默认走 HTTPS 协议,容易因证书或 GFW 被阻断。错误现象包括:Cloning into 'xxx'... fatal: unable to access 'https://github.com/xxx': Failed to connect to github.com port 443。
- 优先尝试改用 SSH:确保本地已配置 GitHub SSH key,并在
composer.json中将https://github.com/xxx改为git@github.com:xxx - 或全局禁用 HTTPS Git:运行
git config --global url."git@github.com:".insteadOf "https://github.com/" - 不推荐设置
http.sslverify=false,这会带来安全风险,且新版 Git 已默认校验 - 某些 CI 环境(如 GitHub Actions)无需额外配置,因为其内置了 GitHub 源加速和缓存机制
仍然超时?检查 DNS 和 TLS 版本兼容性
少数情况下,超时并非网络慢,而是 DNS 解析失败或 TLS 握手卡死。比如某些企业网络强制使用老旧 DNS,导致 mirrors.aliyun.com 解析成错误 IP;或 PHP cURL 扩展编译时链接了过旧的 OpenSSL,无法完成 TLS 1.2+ 握手。
- 用
dig mirrors.aliyun.com +short或nslookup mirrors.aliyun.com确认解析结果是否合理(应返回多个阿里云 CDN IP) - 运行
php -r "print_r(openssl_get_cipher_methods());"查看是否支持tls1_2;若无,需升级 PHP 或重新编译 cURL - 临时绕过 DNS:在
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)中添加一行114.114.114.114 mirrors.aliyun.com(慎用,仅测试)
最常被忽略的是:镜像源配置正确,但项目里某个 require-dev 包指定了非标准仓库,或者用了 path 类型仓库却路径不存在——这种错误不会报明确的 timeout,而是静默卡住,得靠 composer install -v 看详细日志定位。










