先に結論を。
aptでインストールしていたComposerをアインインストールして、Composerのインストーラから再度入れ直ししたよ。
再び(みたたび?)PHPをインストールする
WSLにPHPとcomposerをインストールしていた時のことです。
またまたPHPの案件にアサインされる予定があり、今度こそ私も実装することになりそうでして、改めて基礎を学ぼうとしています。
(これまでのPHP案件は、チームリーディングの立場でのアサインとなり、結局実装する機会がありませんでした…。)
WSLにインストールしているPHPのバージョンを確認すると、7.2系。
さすがに今から勉強するのに7系は古いと思い、PHP8.2にバージョンアップしました。
なぜ8.2なのかというと、手元にある参考書が8.2系の本だったためですね。
PHP8.2の導入自体はいろんな方がサイトで公開してくださっていて、
そのありがたい先人の知恵の内容に従うことで順調にインストールは完了。
WSLに入れたComposerが古い?
さて、PHPを使うとなるとほぼセットで導入することになるのがcomposer。
WSLのUbuntuには入っていなかったので、aptコマンドを使ってインストールを実施。
sudo apt install composer
実行したコマンドによるインストールが完了したので、composerコマンドが使えるかの確認も兼ねて、バージョン確認を実施。
composer --version
Composer 2.2.6 2022-02-04 17:00:38
2022?やたら古いような?
Composerのアップデートでエラーが続く
Composerの公式サイトで最新バージョンを確認すると、この記事を作成している時点で2.8.12。
2.2.6からだいぶ更新が入っていますので、アップデートすることにします。
composer self-update
コマンドを実行するとこで、アップデートできるとの情報があったので早速実行。
composer self-update
PHP Fatal error: Uncaught Error: Call to undefined function Symfony\Component\Console\mb_detect_encoding() in /usr/share/php/Symfony/Component/Console/Application.php:1212
Stack trace:省略
結果、手順を紹介しているサイトでは見たことのないエラーが出力されました。
調べてみると、どうやら追加モジュールであるmbstringが不足している模様。
こちらもaptコマンドにてinstallを実施。
改めてself-updateを実行すると…。
PHP Fatal error: Uncaught Error: Class "Normalizer" not found in /usr/share/php/Symfony/Component/String/AbstractUnicodeString.php:31
Stack trace:省略
エラーが変わりました。
どうやらまだモジュールが不足しているようです。
sudo apt install php8.2-intl
にてモジュールを追加し、もう一度self-updateを実行します。
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in /usr/share/php/Symfony/Component/Console/Command/DumpCompletionCommand.php:48
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in /usr/share/php/Symfony/Component/Console/Command/DumpCompletionCommand.php:56
Command "self-update" is not defined.
ここまでやって、定義されてないと?!
Composerを入れなおして解決
今回対処した方法は、冒頭でお伝えした通りのやり方でした。
結局aptでインストールしたcomposerは削除。(設定残ってたら嫌なのでpurgeで。)
apt purge composer
Composerのインストーラをダウンロードしてきて実行する方法に切り替え
curl -sS https://getcomposer.org/installer | php
上記の流れで、aptではなく用意されているインストーラを実行してインストールする方法で、最新のComposerを入れることができました。
Composer入れるだけで疲れた…。