RitoLabo

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

  • 公開:
  • カテゴリ: PHP Laravel
  • タグ: PHP,Laravel,composer,5.5,5.4,update

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環境を立ててしまって実験してみるのも良いですね。
それでは始めていきましょう。

アジェンダ
  1. PHPのバージョン確認
  2. 依存パッケージのアップデート
  3. Laravel5.5へアップグレードを行う

PHPのバージョン確認

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

5.4
PHP5.6.0以上
5.5
PHP7.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などパッケージの公式ページから必ず確認してください。
以下はこちらで確認しているサードパーティパッケージの変更有無です。

olssonm/l5-very-basic-auth
3.* → 4.*
league/flysystem-aws-s3-v3
変更なし
league/flysystem-rackspace
変更なし

Laravel5.5へアップグレードを行う

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程度の使い方であれば今回の手順で問題なくアップデートできたかと思います。