path仓库配置必须写在主项目composer.json的repositories字段中,url指向含composer.json的目录,require包名须与子包name完全一致,启用symlink才能实时生效,生产环境需移除path配置。

path仓库配置必须写对位置和格式
主项目 composer.json 的 repositories 字段是启用 path 加载的唯一入口,漏掉它,Composer 就当本地包不存在。常见错误是把配置写进子包、或误塞进 config 里。
正确写法只有一种结构:
{
"repositories": [
{
"type": "path",
"url": "../packages/auth"
}
],
"require": {
"myorg/auth": "*"
}
}
-
url必须指向**含composer.json的目录**,不是它的父目录,也不是src/ - 路径支持相对写法(如
../packages/auth),不支持~或通配符 -
require中的包名必须和本地包composer.json的name字段**完全一致**(包括大小写) - 版本建议用
*,它表示“取本地最新元信息”,比dev-main更稳妥
为什么改了代码没生效?默认是复制,不是链接
很多人以为配了 path 就自动实时挂载——不是。Composer 默认行为是把本地目录「完整复制」进 vendor/,改源码根本不影响运行时加载的副本。
要让修改立即生效,必须启用符号链接:
- 在本地包的
composer.json中加"options": {"symlink": true} - 或全局开启:
composer config --global path.repo.symlink true - 执行
composer update myorg/auth(不是install),才会重建软链 - 验证是否成功:
ls -la vendor/myorg/auth应该显示指向../packages/auth的链接
注意:symlink 选项仅 Composer 2.2+ 支持;若版本旧,软链不会生成,且无报错提示。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
PSR-4 自动加载路径拼接容易多一个斜杠
本地包的 autoload.psr-4 配置末尾如果多写斜杠,会导致类文件路径拼错。例如写成 "MyOrgAuth": "src/"(末尾带反斜杠),PHP 尝试加载 src//AuthServiceProvider.php,Linux 下直接报 Class not found。
正确写法必须严格:
-
"psr-4": {"MyOrg\Auth\": "src/"}—— 命名空间末尾双反斜杠,路径值末尾**不加**斜杠 - 命名空间和
name字段需保持语义一致,如name: "myorg/auth"对应"myorg\auth\": "src/"(全小写,无下划线) - Linux 文件系统区分大小写,但 PSR-4 映射不区分,混用大小写极易导致类找不到
生产部署前必须清理 path 配置
path 仓库只适用于开发机。生产服务器上 ../packages/auth 路径不存在,composer install 会直接失败,且**不会 fallback 到 Packagist**。
安全做法只有两种:
- 用 CI 构建脚本在打包前自动移除
repositories中的path条目 - 用
studio这类工具管理本地覆盖,它不修改composer.json,避免误提交
切记:不要在 git 提交中保留 path 配置,也不要指望靠环境变量动态切换——Composer 解析 composer.json 是静态过程,不支持条件逻辑。










