环境变量配置后仍走官方源,因composer 2.5+已废弃repo.packagist,仅支持composer_repo_packagist(需https且末尾带/);验证须用composer install -vvv | grep "downloading.*packages.json"看首行url,而非composer config输出。

环境变量配置后仍走官方源?验证真实请求地址
Composer 2.5+ 已废弃 composer config -g repo.packagist,改用环境变量是正确方向,但容易漏掉关键细节。它不会报错,也不会提示“配置无效”,只是静默 fallback 到 https://packagist.org。
真正生效的只有两种方式:
- 项目级:在
composer.json的repositories字段里显式写{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 全局级:设置环境变量
COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/(注意末尾必须带/)
别信 composer config -g repo.packagist 的输出——它可能还显示旧值,不代表当前行为。验证是否真生效,唯一可靠方式是:
composer install -vvv 2>&1 | grep "Downloading.*packages.json"
看第一行实际请求的域名是不是阿里云地址。如果仍是 packagist.org,说明环境变量没加载进当前 shell 环境。
环境变量没被 PHP CLI 读到?检查加载时机和作用域
Linux/macOS 下常犯的错误是只在 ~/.bashrc 里加了 export COMPOSER_REPO_PACKAGIST=...,但没执行 source ~/.bashrc,或新开终端后忘记重载;Windows 用户则容易把变量设在 GUI 环境里,而 CLI 启动的 cmd/PowerShell 并未继承。
快速确认 PHP CLI 是否能读到该变量:
php -r "echo getenv('COMPOSER_REPO_PACKAGIST') ?: 'not set';"
如果输出 not set,说明变量根本没传进去。解决办法:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:确保
export行写在~/.bashrc或~/.zshrc,然后运行source ~/.bashrc,再开新终端验证 - Windows:在系统属性 → 高级 → 环境变量中添加为“系统变量”,而非仅“用户变量”,并重启终端
- CI/CD 或宝塔:用
sudo -u www bash -c 'echo $COMPOSER_REPO_PACKAGIST'模拟实际运行用户,避免 root 配置白搭
镜像 URL 格式不对?缺斜杠、协议错、路径非法
环境变量值写成 https://mirrors.aliyun.com/composer(缺末尾 /)会导致 Composer 拼出 /composerpackages.json 这种非法路径,直接 404;写成 http:// 则被 Composer 2.x 自动拒绝(secure-http 默认 true)。
正确格式必须同时满足:
- 协议为
https:// - 域名后紧跟
/,不能省略 - 不能多加路径如
/packages.json或/dist
手动验证镜像可用性(不依赖 Composer):
curl -I https://mirrors.aliyun.com/composer/packages.json
应返回 HTTP/2 200。若返回 HTML 页面(如人机验证)、404 或卡住,说明镜像地址本身不可用,换腾讯云或华为云源更稳妥。
缓存残留导致旧失败路径复用?清缓存 + 删 lock + 重试
即使环境变量已生效,Composer 仍可能拿着旧 composer.lock 里硬编码的 provider 地址去新镜像上找包,结果因路径不匹配直接崩。这不是配置问题,而是元数据脏了。
必须三步一起做:
- 运行
composer clear-cache(Windows 还要手动删%LOCALAPPDATA%\Composer\cache) - 删除
composer.lock和vendor/目录 - 再跑
composer install,让 Composer 重新生成锁文件和 vendor
跳过任意一步都可能复现“明明配对了却还是报错”的现象。尤其 CI 流水线里,composer.lock 若来自不受信分支,重建锁文件是唯一可信起点。










