1. Home
  2. PHP
  3. Laravel
  4. Laravel5.4を5.5へアップデートする入門編。PHPフレームワークは怖くない。

Laravel5.4を5.5へアップデートする入門編。PHPフレームワークは怖くない。

  • 公開日
  • カテゴリ:Laravel
  • タグ:PHP,Laravel
Laravel5.4を5.5へアップデートする入門編。PHPフレームワークは怖くない。

2017 年 8 月 30 日に Laravel5.5 がリリースとなりました。今回のアップデートは LTS(Long Term Support = いつもより長い期間面倒みますよ) という事なので、これは 5.4 や 5.3 からアップグレードしない理由はありません。(ちなみに前回の LTS は 2015 年 6 月の 5.1 でした)

とはいえ、メジャーバージョンアップの時はあれがこれにこれがあれに変更されて…アップデートした途端にエラー吐きまくってまともに動かなくなり…というのは、抱きがちな不安の種の一つです。

ですが Laravel のコアな機能、いわゆる PHP フレームワークの少し深い部分を使っていなければ(基本 MVC 程度とか)、案外素直にアップデート出来てしまいます。

今回は Laravel5.4 から 5.5 へのアップグレードを行いますが、大抵の場合、まず気を付けるのは以下の2点だけです。

  • PHP のバージョン
  • 依存パッケージのバージョン

とはいえ、バージョンを上げるのは常に自己責任という言葉がつきまといますので、公式でどこが変わったのかは一度確認しましょう。

[公式]Laravel 5.5 アップグレードガイド

ここをチェックして、変更する必要がありそうな部分がある場合は、これから行う手順の後にでも併せて行ってください。

いきなりアップグレードが怖い場合は、一度 5.4 環境を立ててしまって実験してみるのも良いですね。
それでは始めていきましょう。

Contents

  1. PHP のバージョン確認
  2. 依存パッケージのアップデート

PHP のバージョン確認

今回の Laravel5.5 アップデートで最も大きい変更点の1つとして、システム要件としての PHP のバージョンが変更になった事があります。

  • 5.4
    • PHP 5.6.0 以上
  • 5.5
    • PHP 7.0.0 以上

今回から、ついに PHP7 以上が要件となりましたので、もしまだ 5.6 の場合は 7 に上げましょう。

依存パッケージのアップデート

5.4 からのアップグレードで必ず行わなければならないのが依存パッケージのアップデートです。

パッケージをアップデートするために、laravel/composer.json に記述してあるバージョンを上げたり、新しい記述を追加します。
主な変更点は以下の通りです。

  • php
    • >=5.6.4 → >=7.0.0
  • laravel/framework
    • 5.4.* → 5.5.*
  • phpunit/phpunit
    • ~5.0 → ~6.0
  • require-dev セクション
    • filp/whoops
      • パッケージ(バージョン~2.0)を追加
  • scripts セクション
    • post-autoload-dump イベントへ package:discover コマンドを追加
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        - "php": ">=5.6.4",
        + "php": ">=7.0.0",
        - "laravel/framework": "5.4.*",
        + "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        + "filp/whoops": "~2.0",
        - "phpunit/phpunit": "~5.0"
        + "phpunit/phpunit": "~6.0"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/",
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true
    }
}

公式にも記載がある基本としての変更はこれだけですが、独自にパッケージを導入している場合には、変更の必要があるかを Github などパッケージの公式ページから必ず確認してください。

composer.json の更新が終わったら、さっそくアップデートを行いましょう。

と、その前に。
もしインストールを Laravel インストーラで行った場合は、インストーラパッケージを更新する必要があります。

Laravel インストーラでのインストールというのは、以下のコマンドでインストールした場合です。

# laravel プロジェクトを作成する
laravel new project_name

composer ではなく、Laravel インストーラでのインストールを行った場合は、以下のコマンドを叩きます。

# laravel ルートディレクトリへ移動
cd /path/to/laravel

# インストーラパッケージを更新する
composer global update

# 実行結果
[demo@localhost laravel]# composer global update
Changed current directory to /demo/.config/composer
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 6 updates, 0 removals
- Updating symfony/process (v3.2.6 => v3.3.10): Loading from cache
- Installing symfony/filesystem (v3.3.10): Downloading (100%)
- Updating symfony/polyfill-mbstring (v1.3.0 => v1.6.0): Downloading (100%)
- Updating symfony/debug (v3.2.6 => v3.3.10): Loading from cache
- Updating symfony/console (v3.2.6 => v3.3.10): Loading from cache
- Updating guzzlehttp/guzzle (6.2.3 => 6.3.0): Loading from cache
- Updating laravel/installer (v1.3.5 => v1.4.1): Downloading (100%)
Writing lock file
Generating autoload files

それではいよいよ、バージョンを 5.5 へ上げます。
laravel ルートディレクトリにて、composer コマンドを叩きましょう。

# laravel ルートディレクトリへ移動
cd /path/to/laravel

# Laravel 5.4 → 5.5 へアップグレード
composer update

# 実行結果
[demo@localhost lara54to55]# composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 9 installs, 12 updates, 1 removal
  - Removing symfony/yaml (v3.3.10)
- Installing doctrine/lexer (v1.0.1): Loading from cache
- Installing egulias/email-validator (2.1.2): Loading from cache
- Updating swiftmailer/swiftmailer (v5.4.8 => v6.0.2): Loading from cache
- Installing psr/simple-cache (1.0.0): Loading from cache
- Installing psr/container (1.0.0): Loading from cache
- Updating laravel/framework (v5.4.36 => v5.5.19): Loading from cache
- Updating sebastian/recursion-context (2.0.0 => 3.0.0): Loading from cache
- Installing sebastian/object-reflector (1.1.1): Loading from cache
- Updating sebastian/object-enumerator (2.0.1 => 3.0.3): Loading from cache
- Updating sebastian/global-state (1.1.1 => 2.0.0): Loading from cache
- Updating sebastian/exporter (2.0.0 => 3.1.0): Loading from cache
- Updating sebastian/environment (2.0.0 => 3.1.0): Loading from cache
- Updating sebastian/diff (1.4.3 => 2.0.1): Loading from cache
- Updating sebastian/comparator (1.2.4 => 2.1.0): Downloading (100%)         
- Updating phpunit/phpunit-mock-objects (3.4.4 => 4.0.4): Loading from cache
- Installing theseer/tokenizer (1.1.0): Loading from cache
- Updating phpunit/php-code-coverage (4.0.8 => 5.2.3): Downloading (100%)         
- Installing phar-io/version (1.0.1): Loading from cache
- Installing phar-io/manifest (1.0.1): Loading from cache
- Updating phpunit/phpunit (5.7.23 => 6.4.3): Loading from cache
- Installing filp/whoops (2.1.12): Loading from cache
filp/whoops suggests installing whoops/soap (Formats errors as SOAP responses)
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: laravel/tinker
Package manifest generated successfully.
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize

アップデートが完了したら、Laravel のバージョンを確認してみます。

# laravel ルートディレクトリへ移動
cd /path/to/laravel

# Laravel のバージョンを確認する
php artisan --version

# 実行結果
[demo@localhost laravel]# php artisan --version
Laravel Framework 5.5.19

5.5 にアップグレード出来た事が確認できました。

最後に、キャッシュをクリアしておきましょう。

# Laravel のキャッシュをクリアする
php artisan cache:clear

# 実行結果
[demo@localhost laravel]# php artisan cache:clear
Cache cleared successfully.

まとめ

これで laravel5.4 から 5.5 へのアップグレードは完了です。

冒頭でも述べた通り、公式のアップグレードガイドを見て、上記手順以外にも手を入れるべき部分があるかどうかはきちんと調べてからアップデートを行いましょう。

とはいえ、基本的な MVC 程度の使い方であれば今回の手順で問題なくアップデートできたかと思います。

Author

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級