SodiumがなくてLaravel Passportのデプロイに失敗した

ローカル環境で、Laravel Passportを追加したプロジェクトをレンタルサーバー(Xserver)へデプロイした際、
「ext-sodium がない」と composerに怒られたので、その解決策をまとめておきます。

今回の環境

  • PHP 7.4
  • Composer 2.0
  • Laravel 8

起こったこと

Xserverで、composer installしようとしたら落ちました。

laravel/passportは、lcobucci/jwtに依存しており、
lcobucci/jwtをインストールできず、失敗してしまったようです。

※こんな感じ↓

lcobucci/jwt 4.1.5 requires ext-sodium * -> it is missing from your system. Install or enable PHP's sodium extension.

sodium を入れるには、管理者権限が必要なため、
レンタルサーバー(Xserver)から乗り換えが必要か…?と、思っていたのですが、、

解決策

色々調べていると、lcobucci/jwtのバージョンを 4.0.4 まで下げれば
sodium がなくてもインストールできることが判明!(laravel/passportの依存も問題なさそうです)
https://packagist.org/packages/lcobucci/jwt?#4.0.4

と、いうことで、新たにバージョン指定でlcobucci/jwtをインストールすることで、
勝手にインストールされていた 4.1.5 から 4.0.4 へ自動でダウンロードすることができました。

composer require lcobucci/jwt:4.0.4

あとがき

この状態で、再度デプロイすることで、レンタルサーバー(Xserver)でも
無事、Laravel Passportをインストールすることができました。

このIssueなんかを見ると、他の解決策もありそうな感じではありますが、
私にはよく分からずです…

https://github.com/lcobucci/jwt/issues/717