このインスタンスには推奨されるPHPモジュールがいくつかありません。(sodium)¶
概要ページでのインストールチェックで下記の警告が表示される。
セットアップに関して警告がいくつかあります。 ・このインスタンスには推奨されるPHPモジュールがいくつかありません。 パフォーマンスの向上と互換性の向上のために、それらをインストールすることを強くお勧めします。 ・sodium
ただしこの問題の解決はRHELバンドルでは解決が難しい。
原因¶
phpでsodiumモジュールが不足している可能性がある。下記のコマンドで結果が返って
こなかった場合はモジュールを追加することで改善する可能性がある。
# php -m | grep -i sodium sodium
モジュールを追加する場合は次のコマンドで導入及び確認を行う。
# yum install libsodium-devel # pecl install libsodium # ls /usr/lib64/php/modules/sodium.so /usr/lib64/php/modules/sodium.so # php -m | grep -i sodium sodium
ただし多くの環境では恐らく解決しない。(後述)
注意(上記では恐らく解決しない理由)¶
ただし、sodiumモジュールが有効な場合でもphpがargon2暗号化方式をサポートする
「--with-password-argon2」オプションを指定してでコンパイルされていない場合、
sodiumモジュールがあってもsodiumが利用するargon2方式が利用できないため、
nextcloudからはsodiumが利用できないと判断されて本警告メッセージが解決しない。
特にRHEL系のバンドル版phpでは下記のようにargon2はサポートしないと明言され
ているため、バンドル版ではコンパイルオプションに「--with-password-argon2」
を追加してrpmを作り直さないとこの問題は解決できない可能性がある。
・Bug 1714591 - RFE: Please enable argon2 and libsodium support in php
https://bugzilla.redhat.com/show_bug.cgi?id=1714591
恐らくnextcloudの暗号化ハッシュで使う物と思われるため、機能を使わなければ
無視しても構わないと判断しているが、機能を利用する場合やどうしてもチェックをパス
して警告をクリアしたい場合はremiリポジトリのphpならargon2を有効化したphpを
公開しているのでそれを利用するとよい。(ただしかなりのrpmが巻き込まれてremi版
に置き換えられることになるので、運用中のシステムの場合は注意が必要)
argon2の有効状態の確認¶
argon2方式が利用できなくてもsodiumが有効化されていれば、上記のようにモジュール
一覧やphpinfoでも表示されるのでargon2が有効かのチェックが出来ない。この場合
下記のようにargon2の設定を表示させる。
# php -r 'print_r(get_defined_constants());' | grep -i argon
- 有効な場合の結果例
# php -r 'print_r(get_defined_constants());' | grep -i argon [PASSWORD_ARGON2I] => argon2i [PASSWORD_ARGON2ID] => argon2id [PASSWORD_ARGON2_DEFAULT_MEMORY_COST] => 65536 [PASSWORD_ARGON2_DEFAULT_TIME_COST] => 4 [PASSWORD_ARGON2_DEFAULT_THREADS] => 1 [PASSWORD_ARGON2_PROVIDER] => standard [SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13] => 1 [SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13] => 2 [SODIUM_CRYPTO_PWHASH_STRPREFIX] => $argon2id$
- 無効な場合の結果例
# php -r 'print_r(get_defined_constants());' | grep -i argon Binary file (standard input) matches
重ねるが、向こうである場合はコンパイルオプションに「--with-password-argon2」
を追加してコンパイルし直す必要がある。