プロジェクト

全般

プロフィール

このインスタンスには推奨される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」
を追加してコンパイルし直す必要がある。