@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Ubuntu JammyにPHP 8.2 Laravel 10の環境を作ること

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-curlphp8.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-xmlphp-domパッケージをインストールします。

これでcomposer updateに成功しました。

参考

20230207 追記

WSL上の Ubuntu 20.04 LTS を 22.04 LTS へアップグレードする - @ledsun blog

サードパーティーのsources.listが無効になるみたいです。 該当のパッケージが必要になったときに、追加し直せば良さそうです。

これでもう一度sudo add-apt-repository ppa:ondrej/phpする必要があったようです。 完全に忘れていました。