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

Laravel 8升级至Laravel 11:依赖问题求助及升级建议

Laravel 8 升级至 Laravel 11:依赖问题排查与升级建议

旧依赖配置(Laravel 8)

"require": {
    "php": "^7.3|^8.0",
    "firebase/php-jwt": "^6.10",
    "fruitcake/laravel-cors": "^2.0",
    "google/apiclient": "^2.16",
    "guzzlehttp/guzzle": "^7.0.1",
    "laravel/framework": "^8.75",
    "laravel/sanctum": "^2.11",
    "laravel/tinker": "^2.5",
    "laravel/ui": "^3.4",
    "laravelcollective/html": "^6.4",
    "paragonie/sodium_compat": "^1.21",
    "spatie/laravel-permission": "^5.11"
},
"require-dev": {
    "facade/ignition": "^2.5",
    "fakerphp/faker": "^1.9.1",
    "laravel/sail": "^1.0.1",
    "mockery/mockery": "^1.4.4",
    "nunomaduro/collision": "^5.10",
    "phpunit/phpunit": "^9.5.10"
},

新依赖配置(Laravel 11)

"require": {
    "php": "^8.2",
    "firebase/php-jwt": "^6.10",
    "google/apiclient": "^2.16",
    "guzzlehttp/guzzle": "^7.0.1",
    "laravel/framework": "^11.0",
    "laravel/sanctum": "^4.0",
    "laravel/tinker": "^2.9",
    "laravel/ui": "^4.5",
    "paragonie/sodium_compat": "^2.0",
    "spatie/laravel-html": "^3.11",
    "spatie/laravel-permission": "^5.11"
},
"require-dev": {
    // Currently empty
},

当前问题

升级后遇到以下依赖相关报错:

illuminate/support
facade/ignition

已尝试操作

composer update --with-all-dependencies
composer require facade/ignition:*

问题分析与解决步骤

1. 处理 illuminate/support 冲突

illuminate/support 是 Laravel 框架的核心组件,Laravel 11 已将其包含在 laravel/framework 中,无需单独安装。报错大概率是第三方依赖版本不兼容导致:

  • 检查 spatie/laravel-permission 版本:当前使用的 ^5.11 仅支持到 Laravel 9,需升级至支持 Laravel 11 的版本(如 ^6.0)。
  • 运行命令查看冲突根源:
    composer why-not illuminate/support ^11.0
    
    根据输出升级对应的依赖包。

2. 正确安装 facade/ignition

Laravel 11 对 Ignition 有版本要求,直接使用 * 会拉取不兼容版本,需指定开发环境安装并让 Composer 自动匹配兼容版本:

composer require --dev facade/ignition

3. 补充缺失的开发依赖

Laravel 11 依赖部分开发工具运行,需重新安装核心开发依赖:

composer require --dev fakerphp/faker mockery/mockery phpunit/phpunit:^10.5 nunomaduro/collision

Laravel 跨大版本升级常见问题与建议

1. 环境要求

  • 必须升级 PHP 到 8.2+,同时确保扩展(如 mbstring、openssl、PDO 等)满足 Laravel 11 要求。
  • 数据库版本需适配:MySQL 8.0+、PostgreSQL 13+ 等。

2. 依赖兼容性

  • 所有第三方包(如 spatie/laravel-permission、laravel/ui)必须升级至支持 Laravel 11 的版本,可查看包的 README 或 Packagist 页面确认兼容版本。
  • 移除废弃依赖:fruitcake/laravel-cors 已集成到 Laravel 10+ 框架中,无需单独安装;laravelcollective/html 官方已停止维护,替换为 spatie/laravel-html(你已完成此操作)。

3. 配置与代码变更

  • Laravel 11 简化了配置结构,原 config/ 下的多个配置文件(如 cors.php、auth.php 部分配置)合并到 app.php,需手动迁移自定义配置。
  • 路由系统变更:默认仅保留 routes/web.php 和 routes/api.php,其他路由文件需在 bootstrap/app.php 中手动注册。
  • 中间件调整:全局中间件和路由中间件的注册方式变化,需检查 bootstrap/app.php 中的中间件配置。

4. 测试与调试

  • PHPUnit 需升级至 ^10.5,旧测试用例可能需要适配新的断言方法。
  • 清理缓存:升级后需运行 php artisan config:clear、php artisan cache:clear 清除旧配置缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:27:05