スポンサーリンク

Laravel5.8を6.0にアップデートする方法

あらすじ

Laravelのバージョンを上げるきっかけになった経緯は↓こちらを参照ください。

ひとことで言えば、サポートがもうすぐ切れるので時間があるときに上げておこうってことです。

修正箇所

結論からいいますと、修正箇所は以下となります。
今回私はせっかくなのでPHPを7.4に上げたのですが、7.2以上であれば問題ありません。
composer.json

     "require": {
-        "php": ">=7.1.3,<7.4",
+        "php": "^7.2",
         "fideloper/proxy": "^4.0",
         "guzzlehttp/guzzle": "^6.3",
-        "laravel/framework": "5.8.*",
+        "laravel/framework": "^6.0",
         "laravel/tinker": "^1.0",
-        "laravelcollective/html": "^5.8",
+        "laravelcollective/html": "^6.0",
         "omniphx/forrest": "2.*",
         "predis/predis": "^1.1"
     },

エラーになったポイントとしては、laravelcollective/htmlのバージョンをあげないと、以下のようなエラーが発生しました。

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install laravel/framework v6.15.1
    - Conclusion: don't install laravel/framework v6.15.0
    (...略...)
    - Installation request for laravel/framework ^6.0 -> satisfiable by laravel/framework[6.x-dev, v6.0.0, v6.0.1, v6.0.2, v6.0.3, v6.0.4, v6.1.0, v6.10.0, v6.10.1, v6.11.0, v6.12.0, v6.13.0, v6.13.1, v6.14.0, v6.15.0, v6.15.1, v6.2.0, v6.3.0, v6.4.0, v6.4.1, v6.5.0, v6.5.1, v6.5.2, v6.6.0, v6.6.1, v6.6.2, v6.7.0, v6.8.0, v6.9.0].
    - Installation request for laravelcollective/html ^5.8 -> satisfiable by laravelcollective/html[5.8.x-dev, v5.8.0, v5.8.1].

laravelcollective/htmlを6に上げなさいということですね。

修正後にもう一度トライすると。

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 11 updates, 1 removal
  - Removing erusev/parsedown (1.7.4)
  - Updating symfony/css-selector (v4.4.4 => v5.0.4): Downloading (100%)
  - Updating symfony/mime (v4.4.4 => v5.0.4): Downloading (100%)
  - Updating symfony/service-contracts (v1.1.8 => v2.0.1): Downloading (100%)
  - Updating doctrine/lexer (1.0.2 => 1.2.0): Downloading (100%)
  - Updating symfony/translation-contracts (v1.1.7 => v2.0.1): Downloading (100%)
  - Updating monolog/monolog (1.25.3 => 2.0.2): Downloading (100%)
  - Installing league/commonmark (1.3.0): Downloading (100%)
  - Updating laravel/framework (v5.8.36 => v6.15.1): Downloading (100%)
  - Updating laravelcollective/html (v5.8.1 => v6.0.3): Downloading (100%)
  - Updating omniphx/forrest (v2.6.0 => v2.7.1): Downloading (100%)
  - Updating webmozart/assert (1.6.0 => 1.7.0): Downloading (100%)
  - Updating phpdocumentor/reflection-docblock (4.3.4 => 5.0.0): Downloading (100%)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: omniphx/forrest
Package manifest generated successfully.

やりました!

動け!

アプリを動かしてみて、発生したエラーを解決していってみましょう。

str_randomが使えない

[2020-02-18 17:52:37] local.ERROR: Call to undefined function App\Services\str_random()

ぐぬぬ、以前自分が書いていた以下の記事のことをすっかり忘れていました。

Laravel5系のデフォルトからはstr_やarray_のヘルパは削除され、別に切り出されています。

ですので、以下のコマンドでライブラリを追加。

composer require laravel/helpers

動いた。OK!

あとがき

とりあえず、Laravelのバージョンを上げることができたので、次はPHPのバージョンが上がってエラーが出ている箇所を確認します。

コメント

タイトルとURLをコピーしました