直接结论:Composer卡在Resolving dependencies或Downloading,90%是镜像未生效或本地环境问题;需严格按三要素配置repo.packagist(单数键名、显式type值composer、URL以/结尾),并验证输出为完整JSON,同时注意项目级repositories会屏蔽全局配置,而Resolving阶段不依赖网络,应排查内存、xdebug及platform匹配等问题。

Composer卡在Resolving dependencies或Downloading,90%不是网络问题,而是镜像根本没生效——配错键名、漏掉type、URL少斜杠,三者任一都会静默失败。
composer config -g repo.packagist 为什么总不生效
这条命令极易“看似执行成功,实则完全无效”。关键点就三个:
-
repo.packagist必须是单数,写成repos.packagist或repositories就不会写入任何有效配置 - 命令末尾必须显式带上
composer这个 type 值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/✅;漏掉composer就 fallback 到默认源 ❌ - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅;https://mirrors.aliyun.com/composer❌(会拼接出错,返回 404)
验证是否真写进去了:运行 composer config -g repo.packagist。输出必须是完整 JSON,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null、或仍是 https://packagist.org,说明没配对。
项目级 repositories 字段会彻底屏蔽全局镜像
只要项目根目录的 composer.json 里存在 "repositories" 字段(哪怕只是空数组 []),Composer 就会直接跳过全局 repo.packagist 配置,强制走项目级定义。
- 检查方法:
grep -n '"repositories"' composer.json - 临时绕过它:
composer install --no-plugins --repository=https://mirrors.aliyun.com/composer/ - 最彻底清理:
sed -i '/"repositories":/,/],/d' composer.json(注意保留缩进),再重试
ThinkPHP 官方模板、Laravel 旧项目常自带已下线的 laravel-china.org 镜像声明,删掉比修它更快。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
换源后仍卡在 Resolving dependencies 是另一回事
这个阶段完全不走网络,是 Composer 在本地穷举满足所有版本约束的组合。镜像再快也帮不上忙。
- 常见真实诱因:
memory_limit过低(如 128M)、启用了xdebug(php -v看是否含 xdebug)、platform版本与实际 PHP 不匹配(比如"php": "7.4"却在 PHP 8.5.5 上跑) - 快速验证是否内存不足:
COMPOSER_MEMORY_LIMIT=-1 composer install - 临时禁用 xdebug:
php -d xdebug.mode=off $(which composer) install - 删掉
vendor/和composer.lock后重装,可排除 lock 文件残留已下线包导致的回退搜索
别指望换镜像解决这个卡顿——它只管下载,不管算。
提速组合命令(CI/本地首次安装必加)
光换镜像不够,还要配合参数规避非必要环节:
-
--no-autoloader:跳过vendor/autoload.php生成,防止因 runtime 目录权限报错中断 -
--no-scripts:跳过 post-install-cmd 等脚本,避免数据库未就绪或环境变量缺失导致失败 -
--prefer-dist:强制走 ZIP 包而非 Git clone;但注意:若项目composer.json里有"prefer-source": true,该参数会被无视 -
--no-cache:跳过本地缓存,确保拉取最新元数据(尤其在镜像刚切换后)
完整命令示例:composer install --no-autoloader --no-scripts --prefer-dist --no-cache。CI 构建中建议固定使用这套组合,避免因环境差异中断。

















