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
する必要があったようです。
完全に忘れていました。