换中文镜像只加速下载,不解决依赖解析慢;卡在“resolving dependencies”是因本地sat求解器穷举版本组合,需收紧约束、禁用dev稳定性和卸载fxp插件,并配合--no-dev、--prefer-dist、-o等参数才能真正提速。

换中文镜像本身不提速依赖更新,只加速下载;真正快起来必须组合参数、避开解析瓶颈,否则再快的镜像也救不了卡在 Resolving dependencies 的命令。
为什么换了阿里云镜像,composer update 还卡十几秒?
镜像只管下载(Downloading、Fetching package),不管依赖求解。卡在 Resolving dependencies 是 Composer 在本地暴力穷举兼容版本,和网络无关。
- 检查
composer.json里有没有写死版本,比如"php": "*"或"monolog/monolog": "2.8.0"—— 放宽约束为"^2.8"或删掉让 Composer 自推 - 确认没启用
"minimum-stability": "dev",它会让求解器拉取所有 dev 分支,候选包数量爆炸 - 删掉
composer.lock后直接composer install?那实际是全量重解析,等同于update—— 改用composer update --lock只更新锁文件元数据 - 项目里是否还残留
fxp/composer-asset-plugin?它绕过镜像直连 Bower,已废弃,必须卸载
composer update 加哪些参数才算真正提速?
光换源只是铺路,关键靠这几个参数砍掉冗余动作:
-
--no-dev:跳过require-dev包(如phpunit、php-cs-fixer),省下 30–60% 时间 -
--prefer-dist:强制走 ZIP 包而非git clone,避免 SSH 认证和磁盘 I/O 开销 -
--optimize-autoloader(或-o):生成静态类映射,后续 PHP 执行更快 -
--classmap-authoritative(或-a):仅限部署环境启用,关掉自动扫描 —— 本地开发禁用,否则新增类直接报Class not found
推荐组合:composer update --no-dev --prefer-dist -o
项目级配置比全局配置更靠谱,尤其在 CI 和团队协作中
全局配置(composer config -g)在 GitHub Actions、宝塔、Docker 容器里常失效,因为执行用户读不到你的 ~/.composer/config.json。
- 进项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意:不加-g) - 这条命令会安全写入
composer.json的repositories字段,key 固定为"packagist",不覆盖已有私有 Git 源 - 改完立刻执行:
composer update --lock,确保composer.lock记录新源地址 - 别手动编辑 JSON —— 多一个逗号或少一个引号,
composer install直接报JSON decode error
验证镜像是否真生效,别靠感觉
执行 composer config -g repo.packagist,输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null、或仍是 https://packagist.org,说明根本没配进去。
- 临时验证请求域名:加
-vvv参数运行任意命令,比如composer update -vvv 2>&1 | grep "GET https",看实际请求的是不是镜像域名 - 清缓存再试:
composer clear-cache,避免旧元数据干扰 - 如果用了代理或公司防火墙,HTTPS 镜像可能被拦截 —— 仅内网可信环境可降级为 HTTP:
http://mirrors.aliyun.com/composer/
最常被忽略的点:镜像同步有延迟,凌晨时段元数据可能滞后;composer outdated 显示“无更新”未必是真的,得加 --no-cache 或切回官方源交叉验证。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











