システムバージョンアップ②ソース修正
システムバージョンアップ①に書いた通り、OSなどをアップデートして動かそうとしています。まずはローカル環境である程度動くところまでソースコードを修正していきます。都度追記する形で書いていきます。
とりあえず乗っけてみる
2020.11.22(Sun) – 最新バージョンにソース落としてエラーでもいいからページが表示されるところまでを目指しました。
MariaDBやMongoDBの復元はあっさりできました。MongoDBはメジャーバージョンが上がっているのでうまくいかないかもと思いましたが、問題なくmongorestoreで復元できました。
composerのインストールで色々エラーが出たのですが、単純に設定が足りてなかったりするだけでした。名前空間の最初をAppからHgs3に変えていたのを忘れて、composer.jsonの設定をそのままにしていたところで若干ハマりつつも、2時間ほど奮闘の末なんとかcomposerのインストールは成功しました。
そしたら、動くんですよね。トップページだけですけども。Laravel8はルートの書き方が変わっているって話で動かないかと思ったのですが、まだ互換性は維持されているのでしょうか?でも、他のページは動きません。しかもLaravelのエラーではなく、Apacheのエラーが出ていました。
[core:error] [pid 515] [client ::1:41210] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://localhost/
何でしょうね?次回見てみます。
2020.11.23(月) – 上記のエラー解決しました。単に、.htaccessのRewriteRuleとRewriteBaseの設定が現在の開発環境と合っていないだけでした😅
ログインしようとするとエラーになりますね。ルートが見つからないと言ってるので、ルーティングの書き方変更によるものでしょうか…?先にルーティングの書き方を直すことにします。
Laravelのルーティングを修正
Laravel8からはルーティングの書き方が変わっちゃいまして、こうだったのが
Route::get('/login', 'LoginController::login');
こう書かないといけなくなりました。
Route::get('/login', [App\Http\Controllers\LoginController::class, 'login']);
Laravel7時点でどちらでも行ける状態だったらしいのですが、6.2くらいで止まっていたので知りませんでした🤣
結構な量あるので直すの面倒くさかったけど、全部直しましたよ!そしたらルーティング回りで出ていたエラーがなくなりました。
Laravelのヘルパーを修正
いくつかは動いたのですが、一部ページでこんなエラーが出ました。
Call to undefined function Hgs3\Models\Game\array_pluck()
5.xの後半の方から非推奨だったらしいです…5.5ですからね、動かないはずですわ。次回からヘルパー修正に入っていきます。
2020.11.26(木) – ヘルパーを直しました。2つを置換してみたところ、だいたい動いているっぽいです。
- array_pluck → Illuminate\Support\Arr::pluck
- camel_case → Illuminate\Support\Str::camel
まだ修正すべき箇所はありそうですが、目視による確認はこのくらいにしておきます。
だいたい動きました
ルーティングの修正がちょっと面倒でしたが、結局作業時間としては2~3時間である程度動くところまでもっていけました。これにてソース修正は一旦完了とします。
全体の動作チェックは開発サーバーでPHPUnitやSeleniumを使ってやろうと思います。これからひたすらテストコードを書く作業が始まる…