COMPOSER_MIRROR环境变量无效,Composer仅识别COMPOSER_HOME等硬编码变量;镜像配置须通过composer config命令或composer.json的repositories数组显式设置,并注意packagist.org置false、末尾斜杠、删vendor与lock文件等关键细节。

COMPOSER_MIRROR 环境变量根本不起作用
直接设置 COMPOSER_MIRROR=https://mirrors.aliyun.com/composer/ 不会改变 Composer 的源地址——官方根本不识别这个变量。Composer 只认 COMPOSER_HOME、COMPOSER_CACHE_DIR 这类硬编码变量,镜像配置必须显式写入或通过 composer config 命令设置。
用 composer config + 环境变量动态切镜像(CI/CD 场景)
在 Jenkins 或 GitHub Actions 中,推荐用脚本实时配置镜像,避免全局污染:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先清掉默认源:
composer config -g repo.packagist false - 再写入目标镜像:
composer config -g repos.packagist composer "${MIRROR_URL}/"(注意末尾斜杠不能少) -
MIRROR_URL从 CI 环境变量注入,比如https://mirrors.aliyun.com/composer - 执行前确保
COMPOSER_HOME已隔离(如设为/tmp/composer-ci),防多个 job 冲突
项目级配置比环境变量更可靠
环境变量适合临时切换,但团队协作和多机部署必须靠 composer.json 自带的 repositories 数组:
- 第一项必须是
{"packagist.org": false},否则元数据仍走官方硬编码地址 - 第二项才是镜像:
{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 改完后必须删掉
vendor/和composer.lock,再跑composer install,否则旧 lock 里的 dist URL 不会更新 - 验证是否生效:运行
composer install --dry-run,日志里出现Installing dependencies from lock file且无Resolving dependencies才算成功
Windows/macOS/Linux 路径与中文字符陷阱
COMPOSER_HOME 设错会导致全局命令静默失效,尤其容易踩坑:
- 路径必须是绝对路径,严禁含中文、
~、$HOME或%USERPROFILE% - Windows 正确示例:
setx COMPOSER_HOME "C:\Users\Alice\AppData\Roaming\Composer" - macOS/Linux 正确示例:
export COMPOSER_HOME="/Users/alice/.my-composer" - 设完必须新开终端验证:
composer config --list --global看 “Global configuration file” 是否匹配 -
PATH必须包含$COMPOSER_HOME/vendor/bin(macOS/Linux)或%COMPOSER_HOME%\vendor\bin(Windows),否则laravel这类 global 命令找不到
composer.json 里写的 repositories 和 config.platform,环境变量只是辅助手段;一旦忘记删旧 composer.lock 或漏掉 {"packagist.org": false},所有配置都会失效。

















