必须先运行composer config --global cache-dir和composer config --global home确认实际路径,输出的才是composer真实读写位置;windows可粘贴路径到资源管理器查看大小,linux/macos用du -sh $(composer config --global cache-dir);超1.5gb且半年未用的老缓存才建议迁移。

确认当前生效的缓存与全局路径
迁移前不查真实路径,大概率白忙——很多人删错目录、改错配置,就是因为默认路径早被环境变量或公司镜像覆盖了。composer config --global cache-dir 和 composer config --global home 必须先运行,它们输出的才是 Composer 实际读写的绝对路径。
Windows 用户可把输出粘贴进资源管理器地址栏(如 %APPDATA%\Composer\Cache),右键“属性”看大小;Linux/macOS 用:du -sh $(composer config --global cache-dir)。缓存超 1.5 GB 且半年没碰老项目,才值得迁移。
注意三点:
-
~在路径中不会被解析,必须写成完整绝对路径,比如/data/composer-cache,不能写~/composer-cache - 目标目录需提前创建,并确保当前用户有读写权限(Linux/macOS:用
chmod 755 /data/composer-cache;Windows:右键 → “安全” → 当前用户勾选“完全控制”) - 改完立刻生效,但旧缓存不会自动搬过去,得手动复制或清空
迁移 vendor 目录位置要改 composer.json,不是环境变量
想让某个项目把依赖装到 third-party 而非 vendor,唯一稳的方式是在该项目的 composer.json 中配:"config": {"vendor-dir": "third-party"}。其他方法基本无效:
-
COMPOSER_VENDOR_DIR环境变量只对当前项目生效,且必须在运行composer install前设置;它不改变全局行为,也不能替代config.vendor-dir的持久性 -
composer install -d /path只是换工作目录,不影响vendor写入位置,常被误用于 CI 脚本,结果部署失败 - 改完必须删掉整个
vendor目录和composer.lock,再跑composer install—— 否则旧 autoload.php 还在原处,require 'vendor/autoload.php'会直接报错
同步要改三处:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 代码里所有
require_once 'vendor/autoload.php'改成新路径,例如require_once 'third-party/autoload.php' - 如果包声明了
bin字段(如 phpunit),还得在config里加"bin-dir": "third-party/bin" - IDE(如 PHPStorm)需手动在
Settings → PHP → Include Paths中添加新路径,否则无法跳转或补全
本地包路径迁移:repositories + name + version 必须对齐
用 path 类型仓库引用本地包时,迁移后最常出错的是路径断裂。关键不是改 URL,而是三者必须同时对齐:
-
repositories数组中的url必须是相对路径(如"../my-lib"),不能是./packages/my-lib/composer.json或含$HOME的写法 - 本地包目录下
composer.json的name(如"acme/utils")必须和项目require中写的完全一致 - 本地包的
version字段不能空,建议写"dev-main";若设了"minimum-stability": "dev",require 时还得加@dev后缀,即"acme/utils": "dev-main@dev"
符号链接不是默认就建好:Linux/macOS 需系统支持 symlink() 调用;Windows 默认 fallback 为复制,除非启用“开发者模式”或以管理员身份运行终端。想强制 symlink,可在本地包的 composer.json 中加:"options": {"symlink": true}。
全局路径迁移:靠 COMPOSER_HOME,不是改 vendor-dir
想把所有项目的全局配置、插件、缓存都挪到 D 盘,核心是改 COMPOSER_HOME,而不是折腾 vendor-dir —— 后者只影响单个项目,且对 composer global require 完全无效。
操作分三步:
- 设环境变量:
COMPOSER_HOME=D:\tools\composer(Windows)或export COMPOSER_HOME="/data/composer-home"(Linux/macOS) - 确保
%COMPOSER_HOME%\vendor\bin(Windows)或$COMPOSER_HOME/vendor/bin(Linux/macOS)已加入PATH,否则phpunit这类全局命令找不到 - 手动把原
%APPDATA%\Composer或~/.composer整个目录复制过去,再验证:composer config --global home输出是否与%COMPOSER_HOME%一致
迁移后第一次运行 composer global require 时,它会在新 COMPOSER_HOME 下重建 vendor/ 和 bin/,旧的全局命令不会自动复活,得重装一遍。










