全局 composer require 安装慢,根本原因是其仅读取 ~/.composer/config.json 且忽略项目配置,必须执行三行命令:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/、composer config -g parallel-downloads 10、composer config -g prefer-dist true,并清缓存后用 -vvv 验证请求是否命中镜像域名。

全局 composer require 安装慢,不是网络差,而是默认仍直连 packagist.org,且不读项目配置——必须单独配好全局镜像、并发数和缓存策略,并验证是否真生效。
为什么 composer global require 还是卡在 downloading
全局命令走的是 Composer 的独立上下文,完全忽略当前目录下的 composer.json 和 composer.lock,只认 ~/.composer/config.json 和环境变量。常见失效原因:
-
composer config -g repo.packagist命令漏了中间的composertype 参数,例如写成composer config -g repo.packagist https://mirrors.aliyun.com/composer/→ 实际静默失败 - URL 少了末尾斜杠:
https://mirrors.aliyun.com/composer会返回 404,正确必须是https://mirrors.aliyun.com/composer/ - 用
sudo执行配置,结果写到了/root/.composer/config.json,但composer global require是当前用户运行,读的是$HOME/.composer/config.json - PHP 禁用了
putenv()(见php.ini中disable_functions),导致配置写入失败却不报错
验证全局镜像是否真正生效
别只信 composer config -g repo.packagist 的输出,要实测请求路径:
- 先清缓存:
composer clear-cache,否则旧的packages.json还在本地,根本不发网络请求 - 执行:
composer global require monolog/monolog -vvv 2>&1 | grep "Downloading\|packages.json" - 看到类似
Downloading https://mirrors.aliyun.com/composer/packages.json才算真正生效;若仍是packagist.org,说明配置没落进目标文件
composer config -g 三行必跑命令
这三条不是“可选优化”,是全局加速的前提条件,缺一不可:
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里源,末尾斜杠不能少) -
composer config -g parallel-downloads 10(Composer 2.2+ 支持;旧版用concurrent.http.max-parallel-downloads) -
composer config -g prefer-dist true(强制走 ZIP 包,跳过 git clone 开销) - 执行完立刻
composer clear-cache,否则缓存污染,新配置等于白配
CI、宝塔或计划任务中全局配置不生效
这类环境常以非登录用户(如 www、nginx)运行 Composer,但 composer config -g 默认写到当前 shell 用户家目录,容易错位:
- 查实际运行用户:
ps aux | grep composer或看 CI 日志 / 宝塔计划任务设置 - 切到对应用户下执行配置,例如:
sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 确认配置路径:
sudo -u www sh -c 'echo $HOME',再检查该路径下.composer/config.json是否已更新
最易被忽略的一点:镜像只加速元数据和 ZIP 下载,不加速 autoload 生成、脚本执行或 post-install-cmd 钩子——如果 require 后半段还卡住,问题大概率不在源,而在这些 PHP 单进程操作上。











