経緯
Laravelのプロジェクトを新規作成するにあたって、miseで最新のPHP8.4.14を入れ、そのcomposerからlaravel/installerをインストールしようとしたら、下記のような謎のエラーが出ました。
$ composer global require laravel/installer
Changed current directory to /Users/***/.local/share/mise/installs/php/8.4.14/.composer
./composer.json has been updated
Running composer update laravel/installer
Loading composer repositories with package information
https://repo.packagist.org could not be fully loaded (curl error 3 while downloading https://repo.packagist.org/p2/lib-curl-(securetransport) libressl.json: URL rejected: Malformed input to a URL function), package information was loaded from the local cache and may be out of date
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
In CurlDownloader.php line 398:
curl error 3 while downloading https://repo.packagist.org/p2/lib-curl-(securetransport) libressl.json: URL rejected: Malformed input to a URL function
https://repo.packagist.org/p2/lib-curl-(securetransport) libressl.json がURLとしておかしいというエラーみたいなんですが、確かにURLとしておかしい気がする。
composer --version は2.9.1になっており、composerのReleasesを見ると
composerの2.9.0も2.9.1も5日前に出たばかりだったので、ちょっとニオウなと思い(理由は最後に書きます)、composerをダウングレードしてみたら直りました。
composerのダウングレード方法
具体的にcomposerの不具合なのか、自分の環境に起因するものなのかまでは調べきれていませんが、取り急ぎダウングレードすることで直りはしたのでその方法です。
composer self-update 2.8.12
ダウングレード先は1個前のマイナーバージョンの最新パッチバージョンである2.8.12です。
これでcomposer installが正常に動くようになりました。
バージョンについての補足
セマンティックバージョニングに従っている場合、パッチバージョン(ドット区切りで左から3つ目)は主にバグ修正なので何かが壊れる可能性は低く、マイナーバージョン(ドット区切りで左から2つ目)が上がった場合機能追加を含む少し大きめのリリース2.9.0のようなマイナーバージョンが上がったばかりのバージョンにはバグが含まれる可能性が(相対的に言って)高いです。
なのでこういう場合、マイナーバージョンを1個ダウングレードを試してみると直る可能性が考えられます。

コメント