You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Laravel 7项目升级至Laravel 10时遇致命错误求助

解决Laravel 7升级到Laravel 10的致命错误问题

核心问题原因

你直接跨多个主版本(7→10)升级,且原有依赖包版本与PHP 8.1、Laravel 10不兼容,同时Laravel升级必须按主版本逐步推进,不能跨版本直接执行composer update。


分步升级方案(必须按顺序执行)

Laravel升级需遵循7 → 8 → 9 → 10的顺序,每一步都要确保依赖兼容、代码适配后再推进下一步。

1. 先升级到Laravel 8

修改composer.json的依赖配置如下:

"require": {
    "php": "^7.3|^8.0",
    "barryvdh/laravel-dompdf": "^0.9.0",
    "fideloper/proxy": "^4.4",
    "fruitcake/laravel-cors": "^2.0",
    "guzzlehttp/guzzle": "^7.0",
    "imliam/laravel-env-set-command": "^1.0",
    "laravel/framework": "^8.0",
    "laravel/socialite": "^5.0",
    "laravel/tinker": "^2.5",
    "maatwebsite/excel": "^3.1.30",
    "mcamara/laravel-localization": "^1.6",
    "milon/barcode": "^8.0",
    "nesbot/carbon": "^2.36",
    "predis/predis": "^1.1",
    "pusher/pusher-php-server": "~5.0",
    "tymon/jwt-auth": "^1.1"
},
"require-dev": {
    "facade/ignition": "^2.5",
    "fakerphp/faker": "^1.9.1",
    "laravel/ui": "^3.0",
    "mockery/mockery": "^1.3.1",
    "nunomaduro/collision": "^5.0",
    "phpunit/phpunit": "^9.3"
}
  • 执行composer update,解决依赖冲突
  • 运行php artisan migrate处理框架迁移变更
  • 清理缓存:php artisan cache:clear && php artisan config:clear
  • 检查自定义代码,替换Laravel 7中已废弃的API(比如路由语法、模型工厂写法)

2. 升级到Laravel 9

修改composer.json:

"require": {
    "php": "^8.0.2",
    "barryvdh/laravel-dompdf": "^2.0",
    "fideloper/proxy": "^4.4",
    "fruitcake/laravel-cors": "^3.0",
    "guzzlehttp/guzzle": "^7.2",
    "imliam/laravel-env-set-command": "^1.0",
    "laravel/framework": "^9.0",
    "laravel/socialite": "^5.5",
    "laravel/tinker": "^2.5",
    "maatwebsite/excel": "^3.1.40",
    "mcamara/laravel-localization": "^1.7",
    "milon/barcode": "^9.0",
    "nesbot/carbon": "^2.36",
    "predis/predis": "^1.1",
    "pusher/pusher-php-server": "~6.0",
    "tymon/jwt-auth": "^2.0"
},
"require-dev": {
    "facade/ignition": "^2.16",
    "fakerphp/faker": "^1.9.1",
    "laravel/ui": "^4.0",
    "mockery/mockery": "^1.5",
    "nunomaduro/collision": "^6.0",
    "phpunit/phpunit": "^9.5"
}
  • 执行composer update
  • 运行php artisan migrate
  • 清理缓存,检查代码适配Laravel 9的变更(比如目录结构、配置文件调整)

3. 升级到Laravel 10

修改composer.json:

"require": {
    "php": "^8.1",
    "barryvdh/laravel-dompdf": "^2.2",
    "fruitcake/laravel-cors": "^3.0",
    "guzzlehttp/guzzle": "^7.2",
    "imliam/laravel-env-set-command": "^1.0",
    "laravel/framework": "^10.0",
    "laravel/socialite": "^5.6",
    "laravel/tinker": "^2.8",
    "maatwebsite/excel": "^3.1.50",
    "mcamara/laravel-localization": "^1.8",
    "milon/barcode": "^10.0",
    "nesbot/carbon": "^2.66",
    "predis/predis": "^2.0",
    "pusher/pusher-php-server": "~7.0",
    "tymon/jwt-auth": "^2.1"
},
"require-dev": {
    "facade/ignition": "^2.20",
    "fakerphp/faker": "^1.23",
    "laravel/ui": "^4.2",
    "mockery/mockery": "^1.6",
    "nunomaduro/collision": "^7.0",
    "phpunit/phpunit": "^10.0"
}
  • 执行composer update
  • 运行php artisan migrate
  • 清理缓存

前端依赖适配(Laravel 10用Vite替代Mix)

原有的npm run dev报错是因为Laravel 10弃用了Laravel Mix,改用Vite:

  1. 移除package.json中的laravel-mix依赖
  2. 添加Vite相关依赖:
    npm install vite laravel-vite-plugin --save-dev
    
  3. 修改package.json的scripts:
    "scripts": {
        "dev": "vite",
        "build": "vite build"
    }
    
  4. 在项目根目录创建vite.config.js:
    import { defineConfig } from 'vite';
    import laravel from 'laravel-vite-plugin';
    
    export default defineConfig({
        plugins: [
            laravel({
                input: ['resources/css/app.css', 'resources/js/app.js'],
                refresh: true,
            }),
        ],
    });
    
  5. 执行npm install,再运行npm run dev即可正常编译前端资源

解决php artisan key:generate报错

确保以下几点:

  1. 项目根目录存在.env文件(可复制.env.example重命名)
  2. 所有Composer依赖已安装完成(无报错)
  3. 执行php artisan config:clear清理配置缓存后,再运行php artisan key:generate

内容的提问来源于stack exchange,提问作者ahmad almasri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:26:08