- How to Laravel Version Upgrade



* 버전 정보

Laravel    : PHP : PhpUnit

5.7(18/09) : >= 7.1.3 : 7.0

5.6(18/02) : >= 7.1.3 : 7.0


5.5(17/08) : >= 7.0.0 : 6.0

- LTS

5.4(17/01) : >= 5.6.4 : 5.0

5.3(16/08) : >= 5.6.4 ~ 7.1 : 5.0  <==

- app/http/routes.php -> routes/web.php로 변경


5.2(15/12) : >= 5.5.9 ~ 7.1 : 4.0

5.1(15/06) : >= 5.5.9 : 4.0



//===============================================

* 이전 버전 라라벨 설치(업그레이드시참고용)

- 현재 업그레이드 할 사이트와 비교용, 필요시 파일 복사


- 설치예) 5.1 버전 설치

composer create-project laravel/laravel lara5.1 5.1



//===============================================

* 모든 업그레이드의 공통된 방법

- composer.json 수정후 "composer update" 명령


- 사용중인 사이트의 composer.json 과  라라벨 기본 설치본(업그레이드 할 버전)의 composer.json을 맞춘다.

- 사이트의 필요 패키지는 유지( 별도 추가 ) : 최신버전 확인 필요



//===============================================

//===============================================

< v5.1 -> v5.2 >


라라벨 코리아 - 5.1에서 5.2.0 으로 업그레이드 하기

https://laravel.kr/docs/5.2/upgrade

https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0


- composer.json 파일 수정

laravel/framework 5.2.* 로 변경


require-dev 섹션에 다음을 추가

"symfony/dom-crawler": "~3.0"  

"symfony/css-selector": "~3.0"



- 파일 수정

config/app.php 수정

//Illuminate\Routing\ControllerServiceProvider::class,  주석처리



- composer update



//=================

- 에러 메시지

Class 'Illuminate\Routing\ControllerServiceProvider' not found

해결책 : ControllerServiceProvider는 더 이상 안씀

config/app.php 수정

//Illuminate\Routing\ControllerServiceProvider::class,  주석처리




//===============================================

lesstif - Laravel 5.1 에서 5.2 로 업그레이드 하기 (추가 에러 수정)

https://www.lesstif.com/pages/viewpage.action?pageId=30703765


- "Undefined variable: $errors"

해결책 : ShareErrorsFromSession 미들웨어 추가

기본 미들웨어 그룹인 'web'에 ShareErrorsFromSession 가 포함되어 있음

Route::group(['middleware' => ['web']], function () {


- db:seed 시 다음 예외가 발생

[Symfony\Component\Debug\Exception\FatalThrowableError]  Fatal error: Class 'Model' not found


해결책 : DatabaseSeeder 의 상단에 use Illuminate\Database\Eloquent\Model; 를 추가



//===============================================

//===============================================

< v5.2 -> v5.3 >


라라벨 코리아 - 5.2에서 5.3 으로 업그레이드 하기

https://laravel.kr/docs/5.3/upgrade


- composer.json파일 수정

laravel/framework 의존성을 5.3.* 로 변경


require-dev 섹션

symfony/css-selector 와 symfony/dom-crawler 의 의존성을 3.1.* 수정


- 옵션

"php": ">=5.5.9",  ->  "php": ">=5.6.4",

"phpunit/phpunit": "^4", -> "phpunit/phpunit": "~5.0",



- 파일 복사

- 다른 위치에 라라벨 5.3 설치

composer create-project laravel/laravel lara5.3  5.3


- 설치된 5.3 버전에서 다음 파일을 비교해서 내용 교체 

app/Providers/EventServiceProvider.php

app/Providers/RouteServiceProvider.php

app/Http 폴더 전체

- Kernel.php

routes 폴더 전체

app/Http/route.php 파일을 참조해서 route/web.php 수정



- composer update



//============================

- 에러 처리

//============

- 에러 메시지                                                                                         

  Declaration of App\Providers\EventServiceProvider::boot(Illuminate\Contracts\Events\Dispatcher $events) should be c

  ompatible with Illuminate\Foundation\Support\Providers\EventServiceProvider::boot()


- 해결 방법                                                                                            

RouteServiceProvider 와  EventServiceProvider 를 5.3 으로 교체

- 다른 위치에 라라벨 5.3 설치

composer create-project laravel/laravel lara5.3  5.3

app/Providers/EventServiceProvider.php

app/Providers/RouteServiceProvider.php



//===============

- 에러 메시지

  [Symfony\Component\Debug\Exception\FatalErrorException]                                                                         

  App\Providers\RouteServiceProvider::App\Providers\{closure}(): Failed opening required 'routes

  /web.php' (include_path='.;C:\php\pear')    


- 해결방법

5.3 버전에서 routes 폴더 복사


//===============

- 에러 메시지

ReflectionException in Container.php line 749: Class web does not exist


- 해결 방법 

5.3 버전에서 app/Http/Kernel.php 파일 복사



//===============

- 에러 메시지

FatalErrorException in Controller.php line 13:

Trait 'Illuminate\Foundation\Auth\Access\AuthorizesResources' not found


- 해결 방법 

app/Http/Controllers/Controller.php 수정

AuthorizesResources 관련 항목 삭제




//===============================================

//===============================================

< 5.3 --> 5.4 >


5.3에서 5.4.0으로 업그레이드 하기

https://laravel.kr/docs/5.4/upgrade


- composer.json 파일 수정

laravel/framework 의존성을 5.4.* 로 변경

    "require": {

        "php": ">=5.6.4",

        "laravel/framework": "5.4.*",   <===== 변경

        "laravel/tinker": "~1.0"        <=== 추가 

    },


phpunit/phpunit 를  ~5.7 으로 업데이트

"phpunit/phpunit": "^5",


- 캐시 비우기

php artisan view:clear

php artisan route:clear

- bootstrap/cache/compiled.php 삭제



- composer update




//===============================================

//===============================================

< 5.4 --> 5.5 >


5.4에서 5.5.0으로 업그레이드 하기

https://laravel.kr/docs/5.5/upgrade


- composer.json 파일 변경

laravel/framework 의존성을 5.5.* 로 변경

"require": {

        "php": ">=7.0.0",   <=== 변경

        "laravel/framework": "5.5.*", <=== 변경

"fideloper/proxy": "~3.3",    <=== 추가



phpunit/phpunit을 ~6.0 으로 업데이트

"require-dev": {

        "phpunit/phpunit": "~6.0"   <===== 변경
        "filp/whoops": "~2.0",      <===== 추가
        "laravel/dusk": "^2.0",     <===== 추가
        symfony 관련 항목 삭제


    },


scripts 부분에 다음을 추가

        "post-autoload-dump": [

            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",

            "@php artisan package:discover"

        ]



- composer update



//====================================================

//참고

5.3을  5.4, 5.5, 5.6, 5.7 로 업그레이드시 문제점 처리

https://github.com/appkr/l5code/issues/14



Posted by 코덴스

댓글을 달아 주세요