- How to Laravel Version Upgrade

 

 

* 버전 정보 ( Laravel History )

Laravel    : PHP : PhpUnit

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

    - 이메일 인증 지원
    - 관리메뉴 - Laravel Nova

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

    - 부트스트랩 4 적용

 

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

- LTS

    - React JS Preset

 

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

 

 

 

//===============
// 라라벨 역사
https://en.wikipedia.org/wiki/Laravel
Version     Release date     PHP version
1.0     June 2011         NA
4.0     May 28, 2013     ≥ 5.3.0
5.0     February 4, 2015     ≥ 5.4.0
5.1 LTS     June 9, 2015     ≥ 5.5.9
5.5 LTS     August 30, 2017     ≥ 7.0.0
    - React Preset
5.6     February 7, 2018     ≥ 7.1.3
    - 부트스트랩 4 적용
5.7     September 4, 2018     ≥ 7.1.3
    - 이메일 인증 지원
    - 관리메뉴 - Laravel Nova

 

 

//------------------------------

https://github.com/laravel/framework/blob/7ca29256b85a910585ab7492d22365c1c5a8e29b/CHANGELOG-6.x.md

https://github.com/laravel/framework/releases

 

1.0 - 2011.06

2.0 - 2011.09

3.0 - 2012.02

4.0 - 2013.05

 

5.0 - 2015.02

5.1 - 2015.06 (LTS)

5.2 - 2015.12

5.3 - 2016.08

5.4 - 2017.01

 

5.5 - 2017.08 (LTS)

5.6 - 2018.02

5.7 - 2018.09

5.8 - 2019.02.27

 

6.0 - 2019.09.03 (LTS)

7.0 - 2020.03.03

8.0 - 2020.09

 

    - v9부터 2년간만 지원

9.0 - 2022.02 

10.0 - 2023.02 

11.0 - 2024 (예정)

 

 

 

 

 

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

* 라라벨 버전 확인

php artisan --version

 

 

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

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

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

- 설치예) 5.1 버전 설치

composer create-project laravel/laravel lara5.1 5.1

 

 

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

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

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

- composer update 명령후 (Updateing dependencies... 메시지 후) 10분이상 걸릴수도 있다.(인내심 필요)

 

 

- 사용중인 사이트의 composer.json 과  라라벨 기본 설치본(업그레이드 할 버전)의 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\(): 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

 

 

//==========
    - 에러(error) 메시지
In SlackServiceProviderLaravel5.php line 27:
  Call to undefined method Illuminate\Foundation\Application::share()
Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

maknz/slack 에러
    - 기능 : sending messages to Slack with incoming webhooks
    - 에러 원인 : Laravel 5.4 부터 share() 대신 singleton()으로 변경
        maknz/slack은 개발 중단 상태

    - 에러 해결 방법 maknz/slack를 제거 하거나, 다음 사이트 것 으로 교체 한다
https://github.com/phpify/slack-laravel
설치 composer require phpify/slack-laravel

 

 

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

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

< 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 codens