Composer install卡在Resolving dependencies是因本地穷举版本组合,与镜像无关;主因是PHP版本约束过宽或minimum-stability设为dev,需验证JSON、清理缓存、正确配置镜像并使用--no-dev和--prefer-dist。

composer install 卡在 Resolving dependencies 是镜像没用上
这个阶段根本不走网络,纯本地穷举版本组合。如果你看到卡几十秒,和镜像源、网络、--prefer-dist全无关。典型诱因是:composer.json里写了太宽的 PHP 版本约束(比如"php": "^7.4 || ^8.0 || ^8.1 || ^8.2"),或者"minimum-stability": "dev"强制拉取不稳定分支。
- 运行
composer validate --strict确认composer.lock合法且已提交 - 检查
composer.json中require和require-dev里的约束是否过于宽松 - 删掉
vendor/和composer.lock后,用composer install -vvv观察日志里最慢的依赖解析环节
镜像配置写错三处就彻底失效
composer config -g repo.packagist这条命令静默失败率极高,错一个字符就回退到https://packagist.org,且完全不报错。
- 键名必须是
repo.packagist,不是repos.packagist(多一个s就无效) - 必须显式指定
composer作为type参数:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
https://开头,且末尾带/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌
验证是否生效:运行composer config -g repo.packagist,输出必须是完整 JSON 对象,形如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null、或仍是官方地址,说明根本没写进去。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
--no-dev 和 --prefer-dist 不是可选,是生产部署刚需
单独换镜像最多提速 2–3 倍;但漏掉--no-dev或--prefer-dist,实际耗时仍可能卡在 4–6 分钟。
-
--no-dev跳过require-dev全部依赖,减少 50%+ 文件下载量,CI/CD 中必须加 -
--prefer-dist让 Composer 下载 ZIP 包而非 Git clone,但前提是镜像已缓存dist——阿里云、腾讯云、清华镜像只缓存dist,几乎不缓存source - 项目级配置里若存在
"prefer-source": true,会直接覆盖全局--prefer-dist,需执行composer config --unset prefer-source
缓存不清,换镜像等于白配
旧缓存里存着 packagist.org 的元数据,Composer 会优先读它并尝试从海外地址拉校验信息,结果卡在 DNS 或 TLS 握手,composer install -vvv日志里会出现Reading packages.json from cache at /home/xxx/.composer/cache/repo/https---packagist-org/这类路径。
- 必须先执行
composer clear-cache,再跑composer install - CI/CD 或宝塔环境要注意执行用户(如
www)和配置用户(如root)不一致,得切到对应用户下重配:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ -
composer install --no-dev --optimize-autoloader --prefer-dist组合 + 清缓存,实测多数项目能从 4–6 分钟压到 20–40 秒
真正卡点往往不在“怎么装”,而在“谁在装”——执行用户权限、缓存归属、镜像 URL 格式,三个地方任何一个没对齐,所有加速参数都只是摆设。

















