WSLにインストール済みとLaravelアプリケーションのLaravelのバージョンを上げようとして思わぬ苦戦をしました。
まずcomposer updateしようとすると
Composer is operationg significantly slower than normal because you to not have the PHP curl extension enabled.
と言われます。
どうもPHPをバージョンアップしたときにcurl extesionを入れていなかったようです。
aptコマンドでphp8.2-curlパッケージをインストールする必要があります。
aptでは、PHP本体と同じタイミングでコンパイルしたsoファイルをパッケージをわけて配布しているようです。
curlの場合は、php8.1-curlやphp8.2-curlです。
usr/lib/20210902/curl.soや/usr/lib/php/20220829/curl.soがインストールされます。
つまり、PHPのバージョンを上げるとこれらの関連パッケージをインストールし直す必要があります。
この辺は、Ruby本体にリンクしたり、C拡張GemをインストールするタイミングでコンパイルするRubyとは世界観が違うようです。 まあ、そもそも拡張機能を設定ファイルでON/OFFするところから違いますね。
php8.2-curlをインストールするには次の準備が必要です。
sudo add-apt-repository ppa:ondrej/php sudo apt upgate
最初、これをしなくてphp-curlパッケージは見つかるのにphp8.2-curlパッケージがみつからなくて困っていました。
それからLaravel 10はxml extensionとdom extensionも必要です。
Laravel 10から必要になったというわけではないですが、いつから必要になったのか、あるいは最初から必要だったかは知りません。
これもaptでphp-xmlとphp-domパッケージをインストールします。
これでcomposer updateに成功しました。
参考
- Composerのインストール方法とよくあるエラーの対処法 – 名古屋のWebシステム開発 iNet Solutions
- php - Composer install error - requires ext_curl when it's actually enabled - Stack Overflow
20230207 追記
WSL上の Ubuntu 20.04 LTS を 22.04 LTS へアップグレードする - @ledsun blog
サードパーティーのsources.listが無効になるみたいです。 該当のパッケージが必要になったときに、追加し直せば良さそうです。
これでもう一度sudo add-apt-repository ppa:ondrej/phpする必要があったようです。
完全に忘れていました。