最稳方案是全局换源:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,国内提速3–5倍;换源后需clear-cache,阿里云/中科大源同步及时,适合新发布包。

composer install 卡在 downloading 包,怎么换源
直接改全局配置最稳,别信临时加 -vvv 看日志再猜哪慢——大部分时候就是 packagist.org 域名解析或连接超时。composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 这条命令就能切到阿里云镜像,国内多数网络环境实测提速 3–5 倍。
注意:不是所有镜像都同步及时,腾讯云、华为云镜像偶尔落后主站几小时,如果装的包是刚发布的(比如 dev-main 或某天内新 tag),优先用阿里云或中科大源;composer show packagist/support 能验证当前源是否生效。
- 别手动改
~/.composer/config.json,容易格式错或覆盖掉 auth 配置 - 公司内网若禁了 HTTPS 重定向,得补上
--secure-http=false(不推荐长期开) - 换源后首次运行
composer clear-cache,否则可能还走旧缓存
composer create-project 拉骨架项目巨慢,怎么跳过 autoload 生成
这个命令默认会执行 composer install --no-dev,而 autoload 生成阶段要扫描全部 vendor 目录,小项目几秒,Laravel + 大量依赖时可能卡住 2 分钟以上。关键是:你只是想拿个空壳,根本不需要立刻能跑。
加 --no-install 参数跳过安装环节:composer create-project laravel/laravel myapp --no-install,进目录后再按需跑 composer install --no-dev 或只装部分依赖。
-
--no-install不影响下载 zip 包,骨架文件全在,只是不自动进 vendor 和 autoload.php - 如果项目含自定义
post-create-project-cmd脚本(比如 Laravel 的 key:generate),这些也不会执行,得手动补 - 某些私有包 require 的 ext-* 扩展缺失时,
create-project会直接失败;先确保php -m里有openssl、mbstring等基础扩展
vendor 目录已存在但 composer update 还是慢,为什么 autoload dump 比下载还耗时
因为 Composer 3.x 默认启用 classmap-authoritative 模式,每次 update 都会强制重新扫描整个 vendor 目录生成 classmap,哪怕只更新一个包。这不是网络问题,是本地 I/O 和 PHP 解析开销。
关掉它:composer config authorative false(注意拼写是 authorative,不是 authoritative),或者删掉 composer.json 里的 "optimize-autoloader": true。
- 开发环境几乎不需要
classmap-authoritative,它只为生产环境省掉 PSR-4 文件查找,但代价是每次 update 多花几十秒 - 如果用了
composer dump-autoload -o手动优化,记得加上--no-classmap-authoritative - PHP 8.1+ 下
opcache.preload已能替代部分 classmap 作用,不必强求
CI/CD 流水线里 composer install 经常超时,怎么稳定住
核心是隔离网络波动和缓存污染。GitHub Actions / GitLab CI 默认没复用 vendor,每次从零装,又没设超时容忍,一卡就失败。
两步必须做:composer install --no-interaction --prefer-dist --optimize-autoloader,再配合缓存 vendor 目录(不是 ~/.composer/cache)。GitHub Actions 可用 actions/cache@v3 缓存 vendor/,key 用 composer.lock 的 hash。
-
--prefer-dist强制走 zip 包而非 git clone,避免因 git 协议被墙或限速 -
--no-interaction防止遇到提示卡住(比如 auth token 询问) - 如果 lock 文件没变,
composer install实际不会重装,但 CI 往往清工作区,所以缓存 vendor 是刚需
有些镜像支持 composer self-update 后自动切源,但新版 Composer 已移除该机制;换源这事,手动配一次,比查自动方案更可靠。










