Composer 项目迁移需保留 composer.json、composer.lock 和源码等必要文件,删除 vendor 等生成物,在新环境运行 composer install 确保依赖一致;锁文件缺失将导致依赖版本不可控。

直接复制整个项目文件夹通常不行,关键在于只保留 源码和声明性配置,让 Composer 在新机器上重新解析、下载并安装依赖。
确保迁移前项目结构干净规范
Composer 项目必须包含以下两个核心文件,缺一不可:
- composer.json:定义项目名称、版本、依赖(require)、开发依赖(require-dev)、自动加载规则等。这是所有操作的唯一依据。
- composer.lock:记录每个依赖包的确切版本、哈希值和嵌套依赖关系。它保证在不同机器上安装出完全一致的依赖树。
如果项目里没有 composer.lock,请先在原机器运行 composer install 或 composer update 生成它(推荐 install 以保持现有版本稳定)。
只复制必要文件,排除生成物和缓存
迁移时只需拷贝以下内容到新机器:
composer.jsoncomposer.lock- 你的源代码(如
src/、tests/、public/等目录) - 其他非生成类配置文件(如
.env、phpunit.xml等)
务必不要复制:vendor/ 目录、composer.phar、各类日志、缓存、IDE 配置(如 .idea/)、node_modules 等。这些都应在新环境重建。
在新机器上执行标准安装流程
进入项目根目录后,按顺序执行:
- 确认已安装匹配版本的 PHP 和 Composer(建议使用与原环境一致的 PHP 版本,可通过
php -v和composer --version检查) - 运行
composer install—— 这会严格按composer.lock安装依赖,不更改版本 - 如有需要,再运行
composer dump-autoload(尤其启用 PSR-4 自动加载后) - 根据项目需求,手动处理环境配置(如复制并编辑
.env,设置数据库连接、密钥等)
如果遇到扩展缺失(如 ext-pdo_mysql),需在新机器安装对应 PHP 扩展,不是靠复制解决。
验证是否迁移成功
快速检查三件事:
- 运行
composer show查看已安装包列表,对比关键依赖版本是否与composer.lock一致 - 执行
php -m | grep your_extension确认所需 PHP 扩展已启用 - 运行基础命令或测试,例如
php -r "echo 'OK';"或./vendor/bin/phpunit --version(若项目含 PHPUnit)
能正常加载类、执行命令、跑通简单测试,基本就说明迁移完成。
不复杂但容易忽略:锁文件是灵魂,删了它或没传过去,就不是“完整迁移”,而是“重新猜依赖”。










