必须全局配置阿里云镜像源:执行 composer config -g repo.packagist https://mirrors.aliyun.com/composer/ 并清缓存,否则 create-project 等全局命令仍慢;禁用 xdebug、检查 memory_limit、删 vendor 与 lock 文件重装可进一步提速。

直接换阿里云镜像源就能解决 90% 的 Composer 安装慢问题,不是“可能有效”,是必须做的第一步。
为什么全局配置 repo.packagist 才真正起作用
只改项目 composer.json 里的 repositories,对 composer create-project、composer global require 这类全局命令完全无效——它们压根不读项目配置。只有 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 这条命令,才会写入 ~/.composer/config.json,让所有后续操作默认走阿里源。
常见错误现象:composer create-project laravel/laravel myapp 依然卡在 Resolving dependencies;或者 composer install 明明项目里写了镜像,却还是去请求 packagist.org。
- 验证是否生效:运行
composer config -g repo.packagist,输出必须是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 别用已停更的源,比如
packagist.phpcomposer.com(2025 年底已下线),访问直接 404 - 腾讯云、华为云镜像偶尔同步延迟几小时,新发布的包(如
laravel/framework v11.0.0)可能还没上,阿里云目前同步最稳
composer install 还慢?检查这三件事
换源后仍慢,基本不是网络问题,而是本地环境或依赖结构拖了后腿。
- 运行
composer diagnose,重点看PHP version和memory_limit—— 如果memory_limit是 128M 或更低,加COMPOSER_MEMORY_LIMIT=-1再试 - 删掉
vendor/和composer.lock,用composer install --no-cache重装;旧lock文件可能引用已下线的包,触发回退查找 - 检查是否启用了
xdebug:运行php -v,若含xdebug,临时禁用再跑命令,否则依赖解析会慢 5–10 倍
composer create-project 卡住不动,怎么跳过自动 install
这个命令本质是「下载骨架 + 自动执行 composer install」,第二阶段才是真瓶颈。你只是想拿个空壳,没必要等 autoload 扫描完整个 vendor 目录。
- 加
--no-install参数:例如composer create-project laravel/laravel myapp --no-install,骨架文件全在,但不进vendor、不生成autoload.php - 进目录后再手动控制:比如先
composer install --no-dev --prefer-dist,或只装核心依赖 - 注意:自定义的
post-create-project-cmd脚本(如 Laravel 的key:generate)也不会执行,得手动补 - 如果卡在第一阶段(下载 ZIP),说明模板托管在 GitHub —— 可改用 Gitee 镜像仓库,但要确认分支名和 tag 对齐
并发下载和 autoload 优化这些参数该不该开
parallel-downloads 和 --optimize-autoloader 确实能提速,但开错时机或场景反而添乱。
- 全局启用并发:运行
composer config -g parallel-downloads 10,这是多数机器的合理上限;设太高会触发file_put_contents(/tmp/): failed to open stream错误 -
--optimize-autoloader和--classmap-authoritative会让安装变慢,因为要扫描全部 PHP 文件生成 classmap —— 生产部署时值得,但开发阶段别开,否则新增类直接报错 - CI/CD 中建议组合使用:
composer install --no-dev --prefer-dist --no-scripts --no-autoloader,装完再补composer dump-autoload --optimize - 别再装
hirak/prestissimo,它在 Composer 2.x 中已失效,甚至可能静默降级为单线程
最关键的细节是:换源后必须立刻执行 composer clear-cache,否则旧缓存里的元数据还在,Composer 会一边读镜像,一边 fallback 校验 packagist.org,等于白换。


















