composer镜像配置不生效的三大硬伤是:键名必须严格为repo.packagist(单数、无s)、第二个参数必须显式写composer(type值)、url必须https且末尾带/;任一不符即静默忽略,不报错并回退官方源。

镜像配置写错键名或结构,Composer 会静默忽略,根本不会报错,但请求照旧发往 packagist.org。
composer config -g repo.packagist 不生效的三个硬伤
你以为执行了命令就配好了?大概率没生效。Composer 只认 repo.packagist 这个精确键名,多一个字母、少一个点都不行。
-
repos.packagist、repositories.packagist.org、mirror—— 全部被忽略,不警告、不提示、直接 fallback - 第二个参数必须是
composer,漏掉它,值会被当普通字符串存,不是源定义 - URL 必须是完整 HTTPS 地址且末尾带
/,比如https://mirrors.aliyun.com/composer/✅;写成https://mirrors.aliyun.com/composer❌,会导致路径拼成/composerpackages.json返回 404
验证是否真走镜像,别信 config 输出
运行 composer config -g repo.packagist 只是看配置存没存进去,不代表请求就走了那里。真正生效得靠日志说话。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 加
-vvv执行安装:composer install -vvv --no-progress - 盯住第一行
Downloading https://...的域名,必须是你配的镜像地址(如mirrors.tuna.tsinghua.edu.cn) - 如果看到
packagist.org或api.packagist.org,说明镜像根本没接管,立刻检查项目级配置
项目级 repositories 覆盖全局配置且不 fallback
哪怕 composer config -g repo.packagist 显示的是阿里云地址,只要项目根目录 composer.json 里有 "repositories" 字段,它就完全生效,且 Composer 2.2+ 不再自动 fallback 到官方源。
- 快速确认:
composer config repo.packagist(不加-g),有输出即被覆盖 - 搜索源配置:
grep -A 5 '"repositories"' composer.json - 若不需要私有源,删掉整个
"repositories": [...]块;若需要,确保第一个是你的镜像,并显式禁用官方源:"packagist.org": false
缓存残留让旧元数据继续作祟
Composer 缓存里存的是 packages.json 快照,含包列表和 dist 下载链接。不清缓存,换源后它仍按旧地址发请求——表现为日志 URL 是镜像,但实际请求失败。
- 清缓存前先确认路径:
composer config --global cache-dir - 执行:
composer clear-cache(注意:CI 环境可能挂载到 NFS,清前确认路径) - 更彻底的办法:
composer install --no-cache强制跳过所有缓存 - 如果
composer.lock是旧源生成的,它里面记录的仍是packagist.org地址,此时必须加--no-cache或重生成锁文件
最常被忽略的是:项目级 repositories 配置的存在本身就会让全局设置失效,而很多人只查 config -g 就停手了。










