答案是默认直连packagist.org导致DNS慢、TLS握手卡、首字节延迟高,必须配置国内镜像源;正确命令为composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,且URL末尾须带/、type值不可省略、键名必须为单数repo.packagist。

Composer install 卡在 “Loading composer repositories” 是网络问题
这不是 Composer 本身坏了,而是它默认从 packagist.org 拉元数据,国内直连经常超时或返回不全。现象是命令停住、光标不动、没报错也没进度,等几分钟后可能才失败或继续——本质是 DNS 解析慢 + HTTPS 连接阻塞。
- 先确认是否卡在这里:
Loading composer repositories with package information(注意不是Updating dependencies) - 执行
composer config -g repo.packagist composer https://packagist.phpcomposer.com临时切镜像(已失效,仅作说明) - 正确做法:改用官方推荐的阿里云镜像,运行
composer config -g repo.packagist composer https://packagist.phpcomposer.com→ 实际应为composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 如果公司内网有代理,别只设系统 HTTP_PROXY,还要加
composer config -g http-proxy http://your-proxy:port,否则 Composer 的 HTTPS 请求仍走不通
“Installing dependencies” 卡住但 CPU 占用高
这通常不是网络问题,而是 Composer 在解析依赖图或解压包时遇到大量嵌套版本约束,尤其当 composer.json 里用了 ^ 或 * 且 lock 文件缺失时,会触发完整 SAT 求解。表现为进程活着、磁盘狂读、php.exe 或 php-fpm 占满一个核。
- 优先检查是否有
composer.lock文件:没有就加一个,或者用composer install --no-dev跳过开发依赖缩小求解空间 - 避免在生产环境跑
composer update;install应该秒级完成,卡住基本说明 lock 文件和当前 PHP 版本/扩展不匹配 - PHP 内存不够也会假死:在命令前加
php -d memory_limit=2G composer install,否则默认 128M 在处理 laravel/octobercms 类大项目时直接 OOM
Windows 下 PowerShell 中文路径导致 install 失败
Composer 本身支持 UTF-8,但 Windows 默认终端(尤其是旧版 PowerShell)用的是 GBK 编码,一旦项目路径含中文(比如 D:\我的项目\),解压 zip 包时会因文件名编码错乱卡在 Extracting ... 阶段,错误不抛出,只静默挂起。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时解决:用 CMD 替代 PowerShell,或在 PowerShell 中执行
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - 根治方法:把项目移到纯英文路径,如
C:\work\project—— 不是建议,是必须。Composer 的 zip 解包逻辑对非 ASCII 路径兼容性差,PHP 的ziparchive扩展在 Windows 上表现尤其不稳定 - 验证方式:删掉
vendor和composer.lock,在英文路径下重新composer install,如果立刻开始下载,那中文路径就是元凶
某些包卡在 “Downloading …” 后无响应
这是特定包的 dist URL 不可用,常见于私有包、GitHub 私库、或 packagist 同步延迟导致的 404。Composer 默认重试 3 次,每次间隔递增,最长可能卡 90 秒才报错,看起来像卡死。
- 加
-v参数看真实进度:composer install -v,会打印出正在尝试的 URL,比如https://api.github.com/repos/xxx/yyy/zipball/abc123 - 如果是 GitHub 私库,确认 token 权限:需要
read:packages(不是repo),且配置在auth.json中而非环境变量 - 临时跳过单个包:用
composer require vendor/name --no-update先写入composer.json,再composer update vendor/name单独处理,避免全量阻塞
最麻烦的情况是某包的 dist URL 返回了 200 但 body 为空(常见于 CDN 缓存异常),这时只能手动下载 zip 放进 vendor/composer/cache/ 对应哈希目录,再加 --prefer-dist 强制使用本地缓存 —— 这种情况极少,但一旦遇上,日志里看不到任何线索,只能靠排除法定位到具体包。

















