根本原因是name或路径不匹配:name须大小写、分隔符(仅短横线-)完全一致,url必须指向含composer.json的目录且为相对于主项目composer.json的路径,末尾不可加/。

本地 path 仓库配置成功了,但 composer require 找不到包,或 composer install 仍去远程下载——根本原因几乎总是 name 或路径没对齐,不是配置没生效。
为什么 composer require vendor/name 报 “Could not find package”
Composer 不做模糊匹配,name 必须和本地包 composer.json 中的 "name" 字段**逐字一致**:大小写、分隔符(只允许短横线 -)、vendor 名全部相同。路径也一样,url 必须指向**含 composer.json 的目录本身**,且是相对于项目根目录的路径。
- 检查本地包根目录下
composer.json是否语法合法(无尾逗号、全双引号、JSON 有效) - 确认
"name": "acme/utils"和你require的字符串完全一样,"Acme/utils"或"acme_utils"都会失败 - 路径末尾不能加
/,"url": "./packages/my-utils/"会被静默忽略;正确写法是"url": "./packages/my-utils" - Windows 用户避免路径含中文、空格或长路径,某些 PHP 版本解析会出错
composer install 还是走 Packagist,没走本地路径
最常见原因是没用 --local 或漏了 --add,导致配置写进了全局 ~/.composer/config.json 而非项目级 composer.json 或项目级配置文件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须用
composer config --local --add repositories.my-path type path,不加--local就是全局配置 - 再执行
composer config --local --add repositories.my-path url ./packages/*,*支持通配,但不支持** - 验证是否写入项目级:运行
composer config --local repositories,输出里应有你的仓库条目 - 如果用
vendor/bin/composer执行命令,它默认不加载项目级配置,除非插件没干扰或显式加--no-plugins
改了本地代码,vendor/ 下没变化
这是最隐蔽的问题:Composer 默认尝试 symlink,但失败时会静默 fallback 到 copy 模式。你看到的是副本,不是链接,自然不会实时更新。
- 关键不在主项目配置,而在**本地包自己的
composer.json是否声明了"options": {"symlink": true}** - Windows 下必须以管理员身份运行终端,否则 symlink 创建失败且无提示
- Docker 场景需加
--cap-add=SYS_ADMIN,并确保挂载方式支持符号链接 - 验证是否真用了 symlink:
ls -la vendor/acme/utils(Linux/macOS)或dir vendorcmeutils(Windows),看到->或JUNCTION才算成功
class not found 或 autoloader 不生效
path 仓库让包“存在”,但类能否被 new 或 use,取决于 autoload 映射是否包含真实路径。Composer 不会自动把本地包的 autoload 规则合并进主项目的自动加载器。
- 确保本地包
composer.json中写了合法的"autoload"段(如"psr-4": {"Acme\": "src/"}) - 主项目运行
composer dump-autoload -o,强制重新生成映射 - Xdebug 断点失效?检查 IDE 中配置的路径是否和磁盘真实路径一致(比如
C:devmy-pkgvsC:/dev/my-pkg)
真正卡住的点往往不是“怎么配”,而是 name 大小写、路径末尾斜杠、symlink 权限、autoload 未重载这四件事中某一个没对上——它们都不报错,只静默失效。










