卡在resolving dependencies是sat求解器本地暴力穷举版本组合所致,与网络、镜像无关;应运行composer install -vvv盯住停顿位置,若长期卡在此步且cpu飙升,即需收紧约束、禁用xdebug、删require-dev或用why-not定位冲突链。

换镜像只加速下载环节,卡在 Resolving dependencies 是本地约束问题,跟网络和镜像完全无关;真正要提速,得先确认慢在哪一步,再针对性处理。
怎么判断 Composer 卡在哪一步?
运行带详细日志的命令,盯住输出里最长时间停顿的位置:
- 如果大量出现
Downloading、Fetching package或GET https://mirrors.aliyun.com/composer/...—— 镜像已生效,下载环节正在加速 - 如果长时间停在
Resolving dependencies(尤其超过 10 秒),甚至反复回溯版本树 —— 这是本地求解器在穷举组合,不发任何网络请求,换镜像毫无作用 - 如果命令根本没发出 HTTP 请求,而是报
Could not open input file: composer或putenv() has been disabled—— 属于环境配置问题,得先修 PATH 或 php.ini
composer config -g repo.packagist 为什么总不生效?
这条命令极易静默失败,不报错也不提示,但实际完全没写进去。必须同时满足三个硬条件:
-
repo.packagist不能写成repos.packagist(多一个s就彻底失效) - 中间必须显式传
composer作为 type 参数:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/✅;漏掉composer就 fallback 到默认源 ❌ - URL 必须是 HTTPS 且末尾带斜杠:
https://mirrors.aliyun.com/composer/✅;https://mirrors.aliyun.com/composer(缺斜杠)❌,部分 Composer 2.2+ 版本会 404 或静默回退
验证是否成功:运行 composer config -g repo.packagist,输出应为 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 或至少是完整 URL 字符串;空、null、或仍是 https://repo.packagist.org,说明没写进去。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
宝塔、CI、计划任务里镜像为啥不起作用?
全局配置写在 ~/.composer/config.json,但它只对当前用户生效。宝塔「PHP 管理器」、「一键部署」、「计划任务」默认以 www 用户运行,而你用 root 执行的 composer config -g 写的是 /root/.composer/config.json,www 根本读不到。
- 查实际执行用户:进宝塔终端,运行
whoami;或看计划任务里写的执行用户 - 给对应用户单独配:
sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 更稳妥的做法是项目级配置:进项目根目录,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g),它会自动合并进composer.json的repositories字段,不破坏已有私有源
Resolving dependencies 卡住怎么办?
这个阶段纯本地计算,和镜像、网络、DNS 全无关系。常见诱因是约束太宽:
- 写了模糊版本号,比如
"monolog/monolog": "*"或"^1.0 || ^2.0",求解器会指数级爆炸 -
"minimum-stability": "dev"开启后,所有dev-分支都参与计算,极大增加搜索空间 - 启用了
xdebug,它会让 PHP 内存占用翻倍,Composer 求解直接 OOM 或超时 - PHP 内存不足(
memory_limit小于 1.5G),尤其在大型项目中
实操建议:
- 收紧
php和关键包的版本约束,例如明确写"php": "^8.2" - 禁用
xdebug:php -d xdebug.mode=off composer install - 清缓存:
composer clear-cache(旧缓存可能含错误元数据,干扰求解) - 删掉
composer.lock和vendor重来,避免锁文件残留旧约束
复杂点在于:同一份 composer.json 在不同 PHP 版本下,求解耗时可能差十倍;容易被忽略的是,require-dev 里的包也会参与求解,哪怕你只跑 composer install --no-dev。










