旧项目没走镜像,大概率是被项目级repositories配置覆盖;Composer源优先级为项目级>全局>默认源,即使全局配置正确,只要composer.json含repositories字段(包括空数组)即屏蔽全局镜像。

直接执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就行,不用动项目文件、不改缓存、不编辑 JSON,改完立刻生效。
为什么旧项目没走镜像?大概率是被项目级配置覆盖了
Composer 的源优先级是:项目 composer.json 里的 repositories > 全局配置 > 默认源。哪怕你全局设好了,只要项目里有 "repositories": {...} 字段,就会完全屏蔽镜像。
- 进项目目录,运行
composer config --list | grep repositories,看有没有输出 - 检查项目根目录下的
composer.json,搜索"repositories"——哪怕只有一行空数组或注释掉的字段,都可能干扰 - 如果确实存在,且你不需要保留私有源,可临时删掉整个
repositories字段;若需保留,就得手动合并阿里云镜像到现有结构里(不是简单替换)
composer config -g repo.packagist 这条命令必须写对
错一个字符就静默失败,不会报错,但配置不生效。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
-g不可省略,漏了就只改当前目录的composer.json,换个项目就失效 - 键名必须是
repo.packagist(不是repos.packagist,多一个s就无效) - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会导致路径拼错,404) - Windows 用户改完得重启终端,否则环境变量没刷新,读不到新配置
验证是否真在用国内镜像,别信“命令跑完了”
清缓存只是辅助手段,关键要看实际请求发到了哪个域名。
- 先执行
composer clear-cache,避免旧元数据干扰 - 新建空目录,运行
composer init -n && composer require monolog/monolog --no-install,观察输出里Downloading行是不是mirrors.aliyun.com - 或者更准:运行
composer show laravel/framework 11.* -vvv 2>&1 | grep "Downloading",过滤真实请求地址 - 如果看到
packagist.org或Could not fetch https://mirrors.xxx//p2/,说明 DNS 不通、镜像临时不可用,或 URL 少了斜杠
最常被忽略的点:旧项目 composer.lock 文件里存的是原始 packagist.org 的 dist URL,即使镜像已生效,Composer 仍会先尝试走 lock 里的地址。遇到安装卡顿,直接跑一次 composer update --lock 强制刷新下载链接。










