用于PHP的libnaid不起作用

用于PHP的libnaid不起作用,php,mysql,security,hash,Php,Mysql,Security,Hash,我想使用Argon2i散列我的密码,但它不起作用。我得到以下错误: 致命错误:未捕获错误:调用未定义的函数Na钠\crypto_pwhash_str() 这是我用来安装libnaude的指南: 我已经检查了LibNasdium的安装和工作情况 我实现了从这个链接获得的Argon2i哈希: 以下是该链接的代码: // Password hashing: $hash_str = \Sodium\crypto_pwhash_str( $password, \Sodium\CRYPTO

我想使用Argon2i散列我的密码,但它不起作用。我得到以下错误:

致命错误:未捕获错误:调用未定义的函数Na钠\crypto_pwhash_str()

这是我用来安装libnaude的指南:

我已经检查了LibNasdium的安装和工作情况

我实现了从这个链接获得的Argon2i哈希:

以下是该链接的代码:

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

问题可能是什么?

导致此问题的最可能原因是libnaid版本过时,这通常是因为Linux发行版补丁错误地只提供libnaid版本1.0.3或1.0.8,尽管1.0.11可用

在PHP项目中安装LibNade需要安装两种不同的东西:

  • libnaid
    ,库本身
  • ext/libnaid
    ,PHP扩展(如果它成为核心扩展,我们可能会将其缩短为
    ext/naid
  • 要使用
    \na钠\crypto\u pwash\u str()
    ,必须满足两个条件:

  • 编译PHP扩展时,必须使用lib1.0.9或更高版本
  • 您必须使用ext/lib1.0.3或更高版本(根据基础库的1.0.9或更高版本编译)
  • 在Halite中,我们调用了一个函数来快速诊断版本问题

    你最好的是:

  • 卸载PHP扩展
  • 从源代码编译lib1.0.11
  • 现在安装了1.0.11,请重新安装PHP扩展
  • (推荐但可选:)要求您的操作系统提供最新版本的libnaude,而不是因为对稳定性的理解有缺陷而将用户束缚在一个过时的版本上

  • 谢谢我很困惑。我备份了所有的东西,并且在我的服务器上没有安装LibNasdaq的情况下重新开始。如何从源代码“编译lib1.0.11”?我在网站上看到一个tarball文件。我该怎么办?我正在运行ubuntu 16。很抱歉,此操作仍然很新。有关必要的步骤,请参阅