Logicky Blog

Logickyの開発ブログです

Windows11にRedisを入れたり複数バージョンのPHPに対応したりした

既存のリリース済みのプログラムを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拡張をインストールする

pecl.php.net

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

readouble.com

composer.jsonを更新する

laravel.com

ここに書いてある内容に、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拡張すらないみたいなことはないわけだし。

herd.laravel.com

まあでも、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様でお金を稼がせていただくわけですし、課金してみようかなと思います。