composer config --global --list --verbose 输出的首行“global configuration file:”是composer实际读取的全局配置路径,其他路径均被静默忽略;验证镜像需composer diagnose或require -vvv查下载url;php升级后须clear-cache加update --with-all-dependencies重算依赖;校验vendor完整性唯一方式是composer_experimental=1 composer verify-checksums --strict。

composer config --global --list --verbose 是唯一可信的配置路径验证方式
它输出的第一行 Global configuration file: 就是 Composer 实际读取的文件路径,其他所有“你以为的配置位置”都会被静默忽略。比如显示 /home/user/.config/composer/config.json,那 ~/.composer/config.json 里的内容再全也没用。
常见误判点:
- Windows 上用 Git Bash 执行该命令,
%APPDATA%不展开,可能显示空路径;换 PowerShell 或 CMD 再试 - 输出里没有
Loaded config file行?说明全局配置文件根本没被识别——大概率是COMPOSER_HOME指向空目录、权限不足,或路径含未展开变量(如%APPDATA%\Composer) - 执行
composer config --global repo.packagist输出为空或仍是https://packagist.org,说明键名写错(应为repo.packagist,不是repos.packagist)、漏了composertype 值,或 URL 缺末尾/
验证镜像源是否真生效不能只看 config 输出
composer config -g repo.packagist 显示 URL ≠ 真走镜像。项目级 composer.json 中只要定义了 "repositories" 字段(哪怕空数组 []),全局配置就完全失效。
实操验证必须触发真实网络请求:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先运行
composer clear-cache清掉旧索引缓存 - 再执行
composer require monolog/monolog -vvv,在日志中搜索Downloading,确认 URL 是你设的镜像地址(如https://mirrors.aliyun.com/composer/packages.json),而不是https://packagist.org/packages.json - 更省事:运行
composer diagnose,看Repo packagist.org:这一行显示的 URL —— 它反映的是当前实际解析依赖时使用的地址,比config -g可靠得多
PHP 版本升级后必须强制重算依赖图
Composer 不会自动感知 PHP 版本变化,仍沿用 composer.lock 中为旧版本解出的包组合。即使 composer.json 写着 "php": "^8.2",也可能因锁文件残留旧版本而报错 Your requirements could not be resolved。
关键操作不是重装 Composer,而是三步落地:
- 运行
php -v和php -m,确认mbstring、curl、openssl等扩展已加载 - 执行
composer clear-cache,清除平台感知缓存 - 用
composer update --with-all-dependencies,而非普通update—— 它会递归放开所有依赖(包括传递依赖)的版本锁,让 Composer 基于当前 PHP 版本重新计算整个依赖图
verify-checksums --strict 是校验 vendor 文件真实哈希的唯一手段
composer clear-cache 只删下载缓存,对 vendor/ 下已解压的文件毫无影响。要确认这些文件是否和 composer.lock 记录的一致,必须用实验性命令:COMPOSER_EXPERIMENTAL=1 composer verify-checksums --strict。
注意它的行为边界:
- 不加
--strict时,哈希不匹配也只警告且返回码为 0;不设COMPOSER_EXPERIMENTAL=1则命令不可见 - 跳过
type: "path"包、无dist.sha256字段的包、以及vendor/composer/autoload_*.php这类生成文件 - 但会失败于手动改过的
vendor/autoload.php—— 它虽关键,却不在校验体系内,生产部署前务必设vendor/为只读,并单独断言该文件内容未变










