Laravel 5.1から5.2へアップグレードでハマった

2015年12月21に、Laravel 5.2がリリースされました。

そろそろ安定してきているだろうと思い、手元の開発環境のLaravel 5.1を5.2にアップグレードしてみました。

image

スポンサーリンク
スポンサーリンク

Laravel 5.1からLaravel 5.2へのアップグレード手順書

まず現行バージョンを確認します。

composer.jsonを修正します。

config/app.php を編集して不要になった以下のproviderを削除します。

Illuminate\Foundation\Providers\ArtisanServiceProvider::class
Illuminate\Routing\ControllerServiceProvider::class

これを削除しておかないと、後でExceptionが発生します。

composer updateします。

アップデートが開始されました。

しばらく順調にアップデートされているように見えましたが、こんなエラーが出てしまいました。

いろいろと調査してみると、こんな記述を見つけました。

Some people don't seem to understand how vars work and add spaces without adding double quotes for some reason.

どうやら、私の場合、.envの中の指定で、以下のようにスペースがある記述がまずかったようです。

修正前

修正後

スペースがある項目の記述をダブルクォーテーション""で囲むように修正後、composer update すると正常にアップデートされました。

Laravelのバージョンを確認します。

無事にアップグレード完了したのでしょうか?

config/auth.phpも修正必要

Apacheを起動してブラウザから確認してみると、エラー発生しました。

どうやら、config/auth.php も修正があるようなので、本家の Laravelのソースファイル をダウンロードしてauth.phpを上書きコピーしました。

Laravel 5.2では、config/xxx.php はいろいろと修正が入った様なので、アップデートがうまくいかない、または、アップデート後にちゃんと起動しない場合は、config/xxx.phpを確認するとよいと思います。

punycodeのvalidation

実は私が、Laravel 5.2を使ってみたい大きな理由は、日本語のURLの入力チェックを行いたかったのです。

Laravel 5.1で、例えば、URLを入力するフィールドを作って、入力チェックをするときに以下のように記述したとします。

この時、日本語のURLを入力するとエラーになってしまいます。

日本語のURL、Punycodeについては以下で説明しておきました。

Punycode (ピュニコード) とは?C#で日本語ドメインを扱う時に必須なアルゴリズムを説明
Punycode って知っていますか? 日本語ドメインを扱う時のPunycode (ピュニコード) の...

この件は、すでに以下の通り修正されているようなので、Laravel 5.2なら大丈夫だと思っていたのです。

URL validation fails for international domains #10088

実際に試してみると、

日本語URLのバリデーション(validation)がちゃんと機能していました。

よかった、よかった。