Laravel6がやってきた!5.8から6へアップグレード

こんにちは。コバヤシです。

ついにLaravel6がやってきました!
予想していた8月中では無く9/3のリリースでしたね。

今回は、前回に引き続き5.8から6へのアップグレードを行いたいと思います。

tech.arms-soft.co.jp

ちなみにLaravel6からはPHP7.2以上が必要になります。

アップグレード

まずcomposer.jsonを書き換えます。

"php": "^7.2",
"laravel/framework": "^6.0",

そしてupdate。

composer update

以下のエラーが出て落ちました。。

In cache.php line 91:
  
Call to undefined function str_slug()

6からstr*やarray*等のヘルパーが実装されなくなったのが問題のようです。 5.5からアップグレードしてきた場合は、configにヘルパーの記述が残っているので変更します。
※プログラム内でヘルパーを使用している箇所があったら修正しておきましょう。

config/cache.php

<?php

'prefix' => env('CACHE_PREFIX', str_slug(env('APP_NAME', 'laravel'), '_').'_cache'),

↓ 以下のように変更

<?php
use Illuminate\Support\Str; // 先頭に追加
  
// 修正
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),

config/session.php

<?php

'cookie' => env('SESSION_COOKIE', str_slug(env('APP_NAME', 'laravel'), '_').'_session'),

↓ 以下のように変更

<?php
use Illuminate\Support\Str; // 先頭に追加
  
// 修正
'cookie' => env('SESSION_COOKIE', Str::slug(env('APP_NAME', 'laravel'), '_').'_session'),

修正して、念のためupdateします。

composer update

今度は問題無く完了しました。

動作確認

アップグレードが完了したので、実際にアクセスしてチェックしてみます。

おっと、、いきなりトップページでエラーが出ました。

Call to undefined function array_except()  at /path/to/storage/framework/views/66f37e4bf52a01fd934ca7fa6b9417bfc28d59dd.php:68

viewのキャッシュでarrayヘルパーが記述されたものが残っているようです。。
キャッシュをクリアします。

php artisan view:clear

これで無事表示されました。 他の箇所も動作的に問題が無さそうです。

laravel-filemanagerを除いては。。。

laravel/helpersのインストール

laravel-filemanager内でstr_singularを使用している箇所があるようです。
ライブラリのアップデートを待つしかないのですが、今回はヘルパーを使えるように
laravel/helpersをインストールして対応します。
※laravel/helpersは、array*やstr*等のヘルパー機能を提供してくれます。

composer require laravel/helpers

これでlaravel-filemanagerも使えるようになりました。

まとめ

やはりヘルパー関数関連で、躓くことが多かったですね。
ライブラリ関係は、これからアップデートして対応していくと思いますので、 そうなったらlaravel/helpersを外したいと思います。

これで取りあえず6になったので、色々試していきますよ!!