直接修改 composer.json 的 config.vendor-dir 是唯一可靠方式,但需删除旧 vendor 目录并重装;环境变量 composer_vendor_dir 优先级更高,适合 ci 或多环境切换。

直接改 composer.json 里的 config.vendor-dir 是唯一可靠方式,但必须配合删旧目录 + 重装,否则无效;环境变量 COMPOSER_VENDOR_DIR 优先级更高,适合 CI 或多环境切换。
改 composer.json 的 vendor-dir 配置才生效
Composer 2.0+ 已彻底废弃命令行参数(如 --vendor-dir)和项目级 config.vendor-dir 的“热更新”能力——它只在 vendor 目录不存在时读取该配置。
- 必须在
composer.json根级的config字段中写入,例如:{ "config": { "vendor-dir": "third-party" } } - 路径可以是相对路径(推荐)或绝对路径,但不能含中文、空格或特殊符号
- 改完后必须手动删除现有
vendor目录,再运行composer install或composer update,否则 Composer 会复用旧结构,autoload 和 bin 文件仍指向原位置 - 如果已有
composer.lock,建议一并删除,避免版本解析冲突
COMPOSER_VENDOR_DIR 环境变量优先级最高
当需要动态控制 vendor 路径(比如 Docker 构建、CI 流水线、不同部署环境),硬编码进 composer.json 就不够灵活。此时应使用环境变量,它覆盖所有其他配置。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:
export COMPOSER_VENDOR_DIR="/tmp/myvendor" - Windows CMD:
set COMPOSER_VENDOR_DIR=C:\myproject\vendor - Docker:
ENV COMPOSER_VENDOR_DIR=/app/vendor(写入Dockerfile) - 注意:Web 服务器(如 PHP-FPM)需在启动前注入该变量,仅 shell 中
export对子进程无效
改路径后必须同步处理的三处关键点
vendor 目录一动,整个依赖链的锚点就偏了。不调整这三项,必然报错。
-
require 'vendor/autoload.php'→ 改为require 'third-party/autoload.php'(路径必须完全匹配新位置) - 所有调用
vendor/bin/xxx的脚本、CI 命令、IDE 配置,都要更新为新路径,例如third-party/bin/phpunit - PHPStorm 等 IDE 默认只索引
vendor,需手动在 Settings → PHP → Include Paths 中添加新路径,否则跳转和补全失效
别踩这些坑:中文路径、软链、全局配置
看似只是换了个目录名,实际牵扯权限、符号链接、工具链兼容性。
- 路径含中文(如
C:\Users\张三\project)会导致 Windows 下.bat文件调用失败,报'php' 不是内部或外部命令;macOS/Linux 下 SIP 或权限策略也可能拦截创建可执行脚本 - 想保留
vendor这个目录名(因某些工具强依赖),可用软链替代:ln -sf third-party vendor(Linux/macOS)或mklink /D vendor third-party(Windows,需管理员权限) -
COMPOSER_HOME/config.json中的vendor-dir只对全局行为有效,无法用于单个项目;而项目级composer.json中的vendor-dir是唯一被支持的项目级配置项
最易被忽略的是 autoload.php 的 require 路径和 IDE 的索引路径——它们不会随配置自动更新,必须人工核对,且团队协作时要确保所有人同步修改。










