Edited at

Laravel5.3から5.4にあげてみた

More than 1 year has passed since last update.


Laravel5.3から5.4にアップデート メモ

初心者の初めてのフレームワークアップデートなのでトンチンカンなことをしてる可能性があります。

ご指摘等ございましたら、是非コメントお願いします。


5.4へアップデート

プロクジェクトのルートディレクトリ

$ php artisan -V

Laravel Framework version 5.3.30

現在、5.3.30です。これを5.4.*に上げていきました。

composer.jsonのrequireの項目を変えます。


composer.json



"require": {
"laravel/framework": "5.3.*",
"illuminate/radis": "5.3.*"
}

を、


composer.json



"require": {
"laravel/framework": "5.4.*",
"illuminate/radis": "5.3.*"
}

へ。

$ composer update

を叩きましょう。これでLaravel5.4になるはずです。

Your requirements could not be resolved to an installable set of packages.

Problem 1
- Conclusion: don't install laravel/framework v5.4.9
- Conclusion: don't install laravel/framework v5.4.8
- Conclusion: don't install laravel/framework v5.4.7
- Conclusion: don't install laravel/framework v5.4.6
- Conclusion: don't install laravel/framework v5.4.5
- Conclusion: don't install laravel/framework v5.4.4
- Conclusion: don't install laravel/framework v5.4.3
- Conclusion: don't install laravel/framework v5.4.2
- Conclusion: don't install laravel/framework v5.4.1
- illuminate/redis v5.3.0 requires illuminate/support 5.3.* -> satisfiable by laravel/framework[v5.3.30], illuminate/support[v5.3.0, v5.3.16, v5.3.23, v5.3.4].
- illuminate/redis v5.3.16 requires illuminate/support 5.3.* -> satisfiable by laravel/framework[v5.3.30], illuminate/support[v5.3.0, v5.3.16, v5.3.23, v5.3.4].
- illuminate/redis v5.3.23 requires illuminate/support 5.3.* -> satisfiable by laravel/framework[v5.3.30], illuminate/support[v5.3.0, v5.3.16, v5.3.23, v5.3.4].
- illuminate/redis v5.3.4 requires illuminate/support 5.3.* -> satisfiable by laravel/framework[v5.3.30], illuminate/support[v5.3.0, v5.3.16, v5.3.23, v5.3.4].
- Can only install one of: laravel/framework[v5.4.0, v5.3.30].
- don't install illuminate/support v5.3.0|don't install laravel/framework v5.4.0
- don't install illuminate/support v5.3.16|don't install laravel/framework v5.4.0
- don't install illuminate/support v5.3.23|don't install laravel/framework v5.4.0
- don't install illuminate/support v5.3.4|don't install laravel/framework v5.4.0
- Installation request for laravel/framework 5.4.* -> satisfiable by laravel/framework[v5.4.0, v5.4.1, v5.4.2, v5.4.3, v5.4.4, v5.4.5, v5.4.6, v5.4.7, v5.4.8, v5.4.9].
- Installation request for illuminate/redis 5.3.* -> satisfiable by illuminate/redis[v5.3.0, v5.3.16, v5.3.23, v5.3.4], laravel/framework[v5.3.30].

ならなかった。

illuminate/radisが対応してないみたいなので5.3から5.4にします。


composer.json



"require": {
"laravel/framework": "5.4.*",
"illuminate/radis": "5.4.*"
}

もう一度アップデートします。

$ composer update

成功しました。

5.4になっているか確認しましょう。

$ php artisan -V

Laravel Framework 5.4.9

よっしゃ!!


5.4にアップデートしてからやったこと

5.3から色々変わっているみたいです。

Laravel公式ドキュメント 5.4 Upgrade Guide

https://readouble.com/laravel/5.4/en/upgrade.html

Laravel 5.4変更点メモ (qiita)

http://qiita.com/a_yasui/items/2d840ed9f25c1fa92981

とりあえず自分のアプリが動くか試してみました。

ErrorException in bd8da9c618dd865057aa28cddce0ffd60ee405cf.php line 61:

Call to undefined method Illuminate\View\Factory::getFirstLoop()
(View: /home/vagrant/Code/robbin/resources/views/home.blade.php)

動きません。

公式ドキュメントによると、

After upgrading all packages, you should run php artisan view:clear

to avoid Blade errors related to the removal of Illuminate\View\Factory::getFirstLoop().
In addition, you may need to run php artisan route:clear to flush
the route cache.

とのことなので実行します。

$ php artisan view:clear

Compiled views cleared!

とりあえずこれで私のプロジェクトは動くようになりました。

追記

他の環境でアップデートしようとcomposer updateしたところ、こんなエラーが出ました。

PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Events\Dispatcher::dispatch() in 

/home/vagrant/Code/robbin/vendor/laravel/framework/src/Illuminate/Con
sole/Application.php:56

"your app"/bootstrap/cache/compiled.php

を削除したところ動くようになりました。