旧 Laravel 项目迁移到新机器后,需执行四步标准流程:①删除 vendor 和 bootstrap/cache/*.php;②运行 composer install --no-dev 严格按 lock 文件安装;③执行 php artisan key:generate 生成密钥;④运行 composer dump-autoload -o 刷新自动加载。

旧 Laravel 项目迁移到新机器或重装环境后,vendor 目录丢失、.env 缺失、密钥未生成、数据库连接失败——这些问题全是因为依赖没走对流程重新安装,不是简单跑一遍 composer update 就能解决的。
确认项目基础文件是否完整
进入项目根目录,检查是否存在 composer.json 和 composer.lock。两者必须同时存在;若只有 composer.json,说明原始依赖版本记录已丢失,后续 install 将无法复现原环境。
若缺失 composer.lock,不要自行运行 composer update 补全——这会触发 Composer 全量解析依赖树,大概率装入不兼容版本(例如拉取 laravel/framework v11 的 alpha 包,或 doctrine/dbal v4.x),导致 artisan 命令直接报错 Class not found。
执行标准依赖重装流程
第一步:清理残留痕迹 → 删除 vendor/ 目录和 bootstrap/cache/ 下所有 .php 文件(包括 packages.php、services.php 等)。
第二步:强制按锁文件安装 → 运行 composer install --no-dev。这一步严格读取 composer.lock 中记录的每个包精确版本号,确保开发与原环境完全一致;加 --no-dev 是防止本地测试工具(如 phpunit)污染生产依赖图。
第三步:生成应用密钥 → 执行 php artisan key:generate。如果 .env 里 APP_KEY 为空或为默认值 base64: 开头的占位符,Laravel 会拒绝启动中间件,session、加密、CSRF 都将失效。
第四步:刷新自动加载映射 → 运行 composer dump-autoload -o。这一步不能省略,否则新增的模型、命令、事件监听器可能无法被自动发现,artisan list 里看不到自定义命令,AppServiceProvider::boot() 中绑定的服务也注册失败。
处理常见阻塞点
方法一:composer install 报错 “Your lock file does not contain a compatible set of packages”
这不是网络问题,是 PHP 环境缺失关键扩展。打开 php.ini,确认以下扩展已启用:【openssl、mbstring、tokenizer、xml、json、pdo、ctype】;CentOS 用户还需额外检查 php-mysqlnd 或 php-pgsql 是否已安装,否则 DBAL 初始化阶段就会中断。
方法二:artisan 命令提示 “Class 'App\Providers\AppServiceProvider' not found”
这是 Laravel 10+ 移除了默认 AppServiceProvider 的自动注册入口,但旧项目仍保留该类引用。请检查 app/Providers/AppServiceProvider.php 是否真实存在;若存在,确认其命名空间为 App\Providers,且类名拼写正确;【不要手动删掉这个文件,否则 boot() 中注册的全局服务将彻底丢失】。
方法三:.env 文件不存在
直接复制 cp .env.example .env,然后用文本编辑器打开 .env,填入数据库地址、用户名、密码;CACHE_DRIVER 必须设为 file 或 redis,设成 array 会导致缓存永久不生效,config:clear 命令静默失败。


















