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

Laravel 5.5升级至Laravel 10遇依赖问题,求分步升级方案

从Laravel 5.5升级到Laravel 10的分步指南

直接跨版本升级必然会出现依赖冲突和版本不兼容问题,必须按官方推荐的逐步升级路径(5.5 → 5.6 → ... → 8 → 9 → 10)操作,以下是针对你的情况的具体步骤:

第一步:恢复到Laravel 5.5的稳定状态

你当前的composer.json已经错误地将laravel/framework设为10,先回退到5.5版本,确保基础环境正常:

  1. 修改composer.json中的laravel/framework为5.5.*,php版本保持>=7.0.0
  2. 执行命令:
    composer update
    
  3. 确认当前应用能正常运行,没有报错

第二步:按版本逐步升级,重点处理依赖兼容

每个版本升级前,先确认PHP版本符合要求(你的8.1.5满足Laravel 8-10的要求,可优先升级到Laravel 8作为过渡),以下是关键节点的操作:

升级到Laravel 8(核心过渡版本)

Laravel 8兼容你的PHP 8.1.5,先完成这一步的依赖替换,解决mPDF等旧包的兼容问题:

  1. 修改composer.json的require和require-dev部分为适配Laravel 8的版本:
    {
      "require": {
        "php": "^7.3|^8.0",
        "barryvdh/laravel-dompdf": "^2.0",
        "gloudemans/shoppingcart": "^4.0",
        "intervention/image": "^2.7",
        "laravel/framework": "^8.0",
        "laravel/tinker": "^2.5",
        "niklasravnsborg/laravel-pdf": "^5.0", // 此版本支持Laravel 8-10,解决mPDF兼容问题
        "shipu/php-aamarpay-payment": "^2.0", // 若该包无适配版本,需寻找替代方案或自行适配
        "milon/barcode": "^10.0",
        "yajra/laravel-datatables": "^10.0"
      },
      "require-dev": {
        "filp/whoops": "^2.14",
        "fakerphp/faker": "^1.9", // Laravel 8开始替换原fzaninotto/faker
        "mockery/mockery": "^1.4",
        "phpunit/phpunit": "^9.5",
        "symfony/thanks": "^1.0"
      },
      // 移除fideloper/proxy,Laravel 6+已内置TrustProxies中间件
      // 保持autoload、scripts等其他配置不变,classmap可改为psr-4自动加载(可选)
    }
    
  2. 执行命令更新依赖:
    composer update --with-all-dependencies
    
  3. 处理升级后的代码适配:
    • 参考Laravel 8升级说明,更新config/app.php、config/auth.php等配置文件
    • 调整模型工厂、路由写法(适配Laravel 8的语法规范)
    • 运行数据库迁移:
      php artisan migrate
      
    • 测试应用核心功能,确保无报错

升级到Laravel 9

完成Laravel 8的适配后,升级到9:

  1. 修改composer.json中的laravel/framework为^9.0,php版本调整为^8.0
  2. 更新相关依赖版本:
    • niklasravnsborg/laravel-pdf升级到^6.0(支持Laravel 9-10)
    • yajra/laravel-datatables升级到^11.0
    • phpunit/phpunit升级到^9.5|^10.0
  3. 执行composer update,处理可能的冲突
  4. 适配Laravel 9的新特性(如字符串函数变化、路由缓存优化等)

升级到Laravel 10

最后升级到目标版本:

  1. 修改composer.json中的laravel/framework为^10.0,php版本调整为^8.1(你的版本刚好符合)
  2. 更新依赖:
    • yajra/laravel-datatables升级到^12.0
    • phpunit/phpunit升级到^10.0
  3. 执行composer update
  4. 适配Laravel 10的变化(如移除全局助手函数、模型默认属性变化等)

关键注意事项

  • 备份优先:升级前务必备份代码和数据库,避免数据丢失
  • 依赖替代:若某些旧包无高版本适配(如shipu/php-aamarpay-payment),需寻找功能类似的替代包,或自行修改包代码适配当前Laravel版本
  • 冲突排查:若升级中出现PHP版本冲突报错,用composer why命令查看哪个包导致的版本要求冲突:
    composer why php ^7.3
    
    找到对应包后替换为兼容PHP 8.1的版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:35:55