path仓库配置未生效的根源在于symlink残留、vcs缓存未清及autoload未重建,需依次删除vendor中对应软链接、清除~/.composer/cache/vcs/缓存、执行composer dump-autoload -o。

path仓库配置没生效,composer show 不显示 source: path
运行 composer show vendor/package,如果输出里没有 source: path ../my-package,说明 Composer 根本没走本地路径模式。常见原因有三个:
• repositories 字段在 composer.json 中是空对象 {} 或含非法源(比如已停用的 "url": "https://packagist.phpcomposer.com"),整个块会被忽略
• 项目级 repositories 配置存在(哪怕只是 []),会**完全屏蔽**全局镜像和 path 设置,此时要删掉它或改用 composer config repos.packagist 检查项目级配置
• 本地包根目录下缺少 composer.json,或其中 name 和 version 与主项目 require 中声明的不一致(例如写 "dev-main",但本地分支叫 master)
composer clear-cache 后本地修改仍不生效
composer clear-cache 只清 ~/.composer/cache/files/ 和部分 provider 索引,对 path 包无效。真正卡住的是三处残留:
• vendor/vendor/package 目录下的 symlink 指向旧状态,必须手动删掉该目录(不是整个 vendor)
• ~/.composer/cache/vcs/ 下的 Git 快照缓存,Linux/macOS 执行 rm -rf ~/.composer/cache/vcs/*,Windows 对应路径是 %APPDATA%\Composer\Cache\vcs\
• autoload 映射未更新:即使 symlink 指向正确,vendor/composer/autoload_psr4.php 里的路径可能还是旧的,必须跑 composer dump-autoload -o 重建
加 -vvv 也看不到 Reading ./../my-package/composer.json
日志里持续出现 Using version x.x.x from cache,说明 Composer 还在走 dist 包流程。这时候要确认:
• 是否误用了 composer update vendor/package —— 它默认优先拉远程 dist,不会触发 path 解析;应直接跑 composer update --no-cache 或 composer install --no-cache
• 是否在 CI/Docker 中启用了 --no-interaction 且未禁用 path 仓库(生产环境不应依赖 path)
• 某些 IDE(如 PhpStorm)会锁住 vendor/ 下的 symlink 文件,导致重装失败,建议关掉 IDE 再试
类修改了但报 Class not found
这不是 Composer 没装上,而是自动加载器没刷新。path 包安装时只建 symlink,不自动重跑 autoload 逻辑。尤其当本地包新增了类、改了命名空间,或调整了 autoload 配置后:
• 必须执行 composer dump-autoload -o(加 -o 是为了生成优化映射,避免开发中漏掉新类)
• 如果主项目 composer.json 的 autoload.files 或 autoload.psr-4 里硬写了该包路径,也要同步删掉对应条目
• 别信 composer update --lock,它不碰 autoload,纯属浪费时间
强制刷新本地包行为的关键,从来不在“清不清缓存”,而在于“删 symlink + 清 vcs + 重 dump-autoload”这三步是否全部到位。少一步,就可能让调试卡在某个看不见的缓存层里。











