2016-11-18 3 views
2

私はパスワードをハッシュするためにArgon2iを使いたいのですが、動作しません。 libsodiumがインストールされ、動作していることを私がチェックしている https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodiumPHPのlibsodiumが動作していません

Fatal error: Uncaught Error: Call to undefined function Sodium\crypto_pwhash_str()

これは私がlibsodiumをインストールするために使用しているガイドがある:私は次のエラーを取得します。私は、このリンクから得たことハッシングArgon2iを実装

:ここhttps://paragonie.com/blog/2016/02/how-safely-store-password-in-2016

は、そのリンクからのコードです:

// Password hashing: 
$hash_str = \Sodium\crypto_pwhash_str(
    $password, 
    \Sodium\CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, 
    \Sodium\CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE 
); 

問題がある可能性がありますか?

答えて

3

ほとんどの場合、Linuxディストリビューションのパッチは1.0.11がリリースされているにもかかわらず、バージョン1.0.3または1.0.8のlibsodiumしか提供していないため、古いバージョンのlibsodiumが原因です。

PHPプロジェクトでLibsodiumをインストールすると、二つの異なるものをインストールする必要があります。

  1. libsodium、ライブラリ自体
  2. ext/libsodium、PHP拡張モジュール(これはコア延長になった場合、我々は、おそらくそれを短くします代わりext/sodium

\Sodium\crypto_pwhash_str()を使用するために、2つの条件が満たされなければならない:

  1. PHP拡張モジュールをコンパイルするときにlibsodium 1.0.9以上を使用している必要があります
  2. ext/libsodium 1.0.3以降(基礎となるライブラリの1.0.9以上でコンパイル)を使用している必要があります。

Haliteでは、バージョンの問題をすばやく診断するために、Halite::isLibsodiumSetupCorrectly()という機能があります。

あなたの最高の最高は、次のとおりです。

  1. はPHP拡張モジュールをアンインストールします。
  2. libsodiumをアンインストールします。
  3. ソースから1.0.11のlibsodiumをコンパイルします。
  4. 1.0.11がインストールされたので、PHP拡張機能を再インストールしてください。
  5. (推奨、オプション)安定性についての間違った理解の結果として、古いバージョンのユーザーを拘束するのではなく、最新のバージョンのlibsodiumを提供するようにオペレーティングシステムに依頼してください。
+0

ありがとうございました!よくわかりません。私はすべてをバックアップし、私のサーバーにlibsodiumをインストールしないで新鮮な状態にしています。ソースから「libsodium 1.0.11をコンパイルする」方法は?私はウェブサイト上のtarballファイルを見る。私はそれをどうしますか?私はubuntuを実行している16.申し訳ありませんが、これはまだ非常に新しいです。 – baileyJchoi

+1

https://paragonie.com/book/pecl-libsodium/read/00-introをご覧ください。md#必要なステップのインストールlibsodiumソース –

+0

は、ありがとう! – baileyJchoi

関連する問題