既存のリリース済みのプログラムをLaravel10から11にしてみたいと思います。ローカルはWindows11でPowershellを使っています。
RedisをWindows11に入れる
ローカルにRedisが入っていないので入れます。最初chocoで入れようとしましたが、どうも動きませんでした。サイトを見たら非推奨っぽいことが書いてあったり、Redisのページにも、windowsに正式に対応していないとか書いてあったので、dockerを使うことにしました。
docker-compose.yml
version: '3.8' services: redis: image: "redis:alpine" ports: - "6379:6379" volumes: - redis-data:/data volumes: redis-data:
php.iniでredis拡張を有効にする
> php --ini C:\tools\php83\php.ini > code C:\tools\php83\php.ini
php.iniを確認したら、redisがありませんでした。 C:\tools\php83\extの中にもredis拡張はないようでした。
redis拡張をインストールする
redis 6.0.2 for Windowsの、PHP8.3用の8.3 Non Thread Safe (NTS) x64をダウンロードして、展開して、php_redis.dllをC:\tools\php83\extに入れました。
redis拡張の代わりにpredisをインストールするだけでもよいらしい
PhpRedis拡張機能をインストールできない場合は、Composerを介してpredis/predisパッケージをインストールしてください。PredisはすべてPHPで記述されたRedisクライアントであり、追加の拡張機能は必要ありません。 composer require predis/predis
composer.jsonを更新する
ここに書いてある内容に、composer.jsonを更新して、 composer update
をしました。ただ、windows11のPHPが8.3なのですが、composer.jsonのPHP指定が8.2.7になっていました。この関係でエラーでました。8.2.7はRender.comの今のPHPのバージョンなので、ローカル環境もこれに合わせようと思います。そこでPHPのバージョン管理の仕組みを入れようと思います。
PHPの複数のバージョンを切り替えられるようにする
今はchocoで choco install php
を使ってインストールしており、PHP8.3なのですが、これだとバージョン管理がめんどくさそうなので、Scoopというのを使ってみたいと思います。
Scoopをインストール
管理者権限なしのPowerShellで下記を実行するとインストールされます。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser > Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
下記を実行すると、PHPのバージョンの一覧がでます。
> scoop bucket add versions > scoop search php Name Version Source Binaries ---- ------- ------ -------- ... php82-xdebug 3.3.2-8.2 versions php82 8.2.21 versions php83 8.3.9 versions phpstorm-eap 2024.2-242.20224.112 versions phpstorm-rc 2024.1.4-241.18034.17 versions xampp74 7.4.29-1 versions php.exe
chocoのcomposerとphpをアンインストールします。
> choco uninstall composer > choco uninstall php
php82とphp83とcomposerをインストールします。
> scoop install php82 > scoop install php83 > scoop install composer
php82に切り替えてみます。
> scoop reset php82 > php -v PHP 8.2.21 (cli) (built: Jul 2 2024 14:02:29) (ZTS Visual C++ 2019 x64)
できているようです。あとはphp.iniとか拡張機能とかです。
> php --ini C:\Users\dev\scoop\apps\php82\current\cli\php.ini
でもこれ、バージョン変わるごとに、php.iniと拡張機能の設定やり直しなのは、ちょっと面倒ですね。。そういうものなのでしょうか?まあ何故Dockerを使わないのか?と思われているかもしれませんね。私も今自問自答しています。Docker使わずに環境作った方が、シンプルで楽じゃん、と最近思ってたのですよね。でも逆に大変な面もありますし、メリットデメリットがありますよね。。
おとなしくDockerで全部環境作ろうかなーと思っている
Dockerでもよいですが、なんだかんだハマることもあるし、重いときもあるしなーみたいな感じ。
あとは、下記を発見しました。これはちょっと便利かもしれない。WindwosにRedisも入れられるし、PHPバージョンも簡単に切り替えられる。拡張機能は結局手動らしいけど、Redis拡張すらないみたいなことはないわけだし。
まあでも、scoopでphp入れて、chocoでpostgres入れてdockerでredis動かせば、十分といえば十分。あんまり変わらないといえば変わらない。メールのシミュレーション機能も、dockerでmailhogとかいうのを使えば同じようなことはできるはずだし。不要と言えば不要。ただ、httpsが簡単に使えて、https://hoge.testでアクセスできるっていうのは、ちょっと便利な気がしなくもない。GUIでアプリ新規作成できるのも、便利な気がしないでもない。いや全然便利じゃないか。dockerを用意せずにredis設定できるっていうのは、結構便利ですね。Herdさえ動いていたら、Laravel開発出来るっていうのは便利ですね。PROを買わないといけないようですが。15000円位でしょうか。年間。微妙だなあ。nodeも既にPowershellでnvm-windowsとかいうのでバージョン切り替えできるようにしておりまして、これをアンインストールしないと、HerdでGUI設定できないようです。まあでもLaravel様でお金を稼がせていただくわけですし、課金してみようかなと思います。