BPSの福岡拠点として一緒にお仕事をさせていただいています、株式会社ウイングドアのモリヤマです。
2020年3月3日にリリースされたLaravel7にちょっとだけ触れる機会があったので書かせていただきます!
今回「Laravel Framework 6.18.3」の環境を「Laravel Framework 7.3.0」にアップグレードしました!
前置き
新人向けの課題で急遽Laravel7を使う事が決まり、流用できそうな環境あったから試してみようと軽い気持ちで取り組んだ結果...見事にハマりました。
試した環境は、最近(?)半年ぐらい前にささっと作って放置していた環境だった為、比較的大きな苦労はなくアップグレードはできました。
...が「Laravel 7.x アップグレードガイド」に書いてある所要時間15分なんて全然収まらなかったぜって話です😂
最終的にやったこと
- 依存パッケージのアップデート(Updating Dependencies)
- Symfony5へのアップグレード(Symfony 5 Related Upgrades)
依存パッケージのアップデート
- laravel/frameworkを^7.0に変更
- laravel/tinkerを^2.0に変更
- facade/ignitionを^2.0に変更
- nunomaduro/collisionを^4.1に変更
- phpunit/phpunitを^8.5に変更
composer.jsonの修正
"require": {
"php": "^7.2",
"fideloper/proxy": "^4.0",
- "laravel/framework": "^6.0",
- "laravel/tinker": "^1.0"
+ "laravel/framework": "^7.0",
+ "laravel/tinker": "^2.0"
},
"require-dev": {
- "facade/ignition": "^1.4",
+ "facade/ignition": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
- "nunomaduro/collision": "^3.0",
- "phpunit/phpunit": "^8.0"
+ "nunomaduro/collision": "^4.1",
+ "phpunit/phpunit": "^8.5"
},
"config": {
"optimize-autoloader": true,
Symfony 5へのアップグレード
src/app/Exceptions/Handler.phpの修正
namespace App\Exceptions;
-use Exception;
+use Throwable;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
* @param \Exception $exception
* @return void
*/
- public function report(Exception $exception)
+ public function report(Throwable $exception)
{
parent::report($exception);
}
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
- public function render($request, Exception $exception)
+ public function render($request, Throwable $exception)
{
return parent::render($request, $exception);
}
src/config/session.phpの修正
- 'secure' => env('SESSION_SECURE_COOKIE', false),
+ 'secure' => env('SESSION_SECURE_COOKIE', null),
- 'same_site' => null,
+ 'same_site' => 'lax',
はい!スムーズに行った場合は、上記の修正を加えcomposer update
で完了でした!
どこでつまずいたか?
最初にcomposer.jsonを修正してcomposer update
を実行した結果、artisan
コマンドが使えなくなってハマった😂
現象:artisanコマンドが動かない
composer update
をしたら下記エラーが発生。
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 255
以降artisan
コマンドが動かなくなってしまいました。
パーミッションの確認やcacheを削除だとか色々試し、
解決方法にたどり着くまで小一時間かかりました😂
解決方法
先にSymfony 5 Related Upgradesを対応する
まとめ
しっかり確認して進めれば、本来は数分で終わる程度の内容でした。
教訓としてはドキュメント(Upgrade Guide)を全体的に読んで、作業手順を組み立ててから進めるべきだったと身に染みました。
何事も段取りが大切ですね!!😊
株式会社ウイングドアでは、Ruby on RailsやPHPを活用したwebサービス、webサイト制作を中心に、
スマホアプリや業務系システムなど様々なシステム開発を承っています。