PHP:安装Libsodium到PHP V5.5(PHP: Installing Libsodium

2019-10-29 18:30发布

如何正确使用PHP 5.5 VERSON安装Libsodium。 我试图遵循指令https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium

下面是我做的步骤:

  1. 转到http://windows.php.net/downloads/pecl/releases/libsodium/1.0.6/

  2. 下载“php_libsodium-1.0.6-5.5-nts-vc11-x64.zip”和提取文件。

  3. 在我的目录复制 “libsodium.dll” “C:\ Program Files文件(x86)的\ PHP \ V5.5” 在哪里 “的php.exe”

  4. 在我的目录 “:\程序文件(x86)\ PHP \ V5.5 \分机C” 复制 “php_libsodium.dll”

  5. 启用php.ini文件“扩展= p​​hp_libsodium.dll”

  6. 重新启动服务器

但是,当我写一个简单的PHP测试文件进行了测试:

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// hash the password and return an ASCII string suitable for storage
$hash_str = sodium_crypto_pwhash_str(
        "mypassword",
        SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
        SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
        );

echo "hash: " . $hash_str;
?>

结果页面显示错误:

致命错误:调用未定义的函数sodium_crypto_pwhash_str()在C:\ PHP \ testLibsodium.php第7行

图书馆Lib​​sodium似乎没有安装,因为它不知道的功能。 我需要什么样的事情做在PHP 5.5版安装PHP Libsodium? 非常感谢你。

更新:我已经安装了X86版本的@iann的建议,并运行此代码:

$storeInDatabase = \Sodium\crypto_pwhash_str(
        "safasfdwr32sfdfas234",
        SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
        SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
        );

现在看来,功能正在被读,但我得到一个错误:

注意:未定义的常量SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE用途 - 假设“SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE”

注意:未定义的常量SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE用途 - 假设“SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE”

警告:钠\ crypto_pwhash_str()预计参数2到长

捕获的致命错误:crypto_pwhash_str():无效的参数

这是否意味着我的libsodium安装正确,但为什么我得到一个错误? 再次感谢你。

Answer 1:

sodium_*直至库转移到本地的PHP,7.2版本的功能并没有在全局命名空间。 从手册 :

在PHP 7.2与来自PECL libsodium之前,下面的功能,在钠的名称空间中定义。 在PHP 7.2中,命名空间赞成sodium_前缀被丢弃(以符合PHP内部开发标准)。

因此,如果你安装来自PECL,你需要使用以前的函数名。 你的情况:

$hash_str = \Sodium\crypto_pwhash_str(
...


文章来源: PHP: Installing Libsodium to PHP v5.5