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

Composer本地Path仓库不是“装个包”那么简单,它是一套路径映射+符号链接+自动加载的联动机制;配错一个字段,composer require 就会静默失败,连错误提示都不给。
为什么composer require vendor/name总报“Could not find package”
这不是网络问题,也不是缓存没清——90% 是 name 或 url 不匹配。
-
name必须和本地包composer.json里写的**逐字一致**:大小写、分隔符(只允许短横线-,不能用下划线_或驼峰)、vendor 名全部对齐,"acme/utils"≠"Acme/Utils" -
url指向的是**含composer.json的目录**,不是文件,且必须是相对于主项目composer.json的路径,比如"../my-pkg",不能是"./my-pkg"(如果主项目composer.json在子目录里) - 路径末尾不能加
/:"url": "../my-pkg/"会被 Composer 完全忽略,不报错也不警告 - Windows 下路径含中文或空格,某些 PHP 版本会解析失败;Docker 中需挂载时加
--cap-add=SYS_ADMIN才能创建 symlink
怎么确认 symlink 是否真正生效
Path 仓库默认尝试软链接,但失败就静默 fallback 到 copy——你改本地代码,vendor/ 里还是旧副本,这是最隐蔽的调试陷阱。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 关键不在主项目配
"symlink": true,而在于**本地包自己的composer.json必须有"options": {"symlink": true}** - Linux/macOS 下运行
ls -la vendor/vendor/name,看到->箭头才是成功;Windows 下用dir vendorendor ame,看到JUNCTION或SYMLINKD才对 - 若显示为普通文件夹,说明 fallback 成了 copy,立刻检查本地包
composer.json是否漏了options段 - Windows 用户必须以管理员身份运行终端,否则 symlink 创建失败且无提示
Class not found 不是 Composer 没装上,而是 autoload 没刷进去
包进了 vendor/,不代表类能被 new 或 use。autoload 映射必须包含本地包的真实路径。
- 本地包
composer.json的autoload配置(如"psr-4": {"Acme\": "src/"})必须合法且路径存在 - 主项目执行过
composer dump-autoload(开发阶段不用加-o),否则新命名空间不会注册进自动加载器 - IDE 调试时 Xdebug 断点不命中?确保 IDE 里打开的文件路径和磁盘真实路径完全一致(比如
/home/user/projectvs/Users/user/project) - 不要指望
composer install自动帮你更新 autoload——它只管依赖安装,autoload 是单独的生命周期
生产环境部署前最容易被忽略的一件事
开发时配的 path 仓库在生产服务器上根本不存在,Composer 不会自动回退到 Packagist,而是直接报错中断部署。
- 绝不能把
repositories提交到版本控制中用于生产环境 - 推荐用
studio工具管理本地覆盖,它通过临时修改composer.json实现,不污染主配置 - CI/CD 流程中,必须在构建前移除或跳过 path 类型仓库(例如用
composer install --no-plugins+ 自定义脚本) - 哪怕本地开发再方便,所有依赖都得有可用的远程源,否则项目不可部署

















