【问题标题】:PHP Sodium not installed?未安装 PHP Sodium?
【发布时间】:2019-09-04 03:11:09
【问题描述】:

我第一次尝试使用 Libsodium 进行加密,但我遇到了错误!我在 XAMPP 上运行所有东西,钠位于 /ext/ 文件夹中,我已将 extension=sodium 添加到 php.ini

这是我的代码:

<?php
// This refers to the previous code block.
require "safeCrypto.php"; 

// Do this once then store it somehow:
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$message = 'We are all living in a yellow submarine';

$ciphertext = safeEncrypt($message, $key);
$plaintext = safeDecrypt($ciphertext, $key);

echo $ciphertext;
echo $plaintext;
echo phpversion();

抛出此错误:

<br />
<b>Warning</b>:  Use of undefined constant SODIUM_CRYPTO_SECRETBOX_KEYBYTES - assumed 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES' (this will throw an Error in a future version of PHP) in <b>D:\xampp\htdocs\php\crypttest.php</b> on line <b>6</b><br />
<br />
<b>Fatal error</b>:  Uncaught TypeError: random_bytes() expects parameter 1 to be integer, string given in D:\xampp\htdocs\php\crypttest.php:6

我使用的是 PHP 7.2.10

更新

运行 get_loaded_extensions 并且未安装钠,我不知道为什么。 php_sodium.dll 存在于 ext 文件夹中,我在 php.ini 中添加了 extension=sodium,以及其他可以正确加载的扩展。

【问题讨论】:

  • 更改 php.ini 后是否重新启动了 Apache?
  • @JiriHrazdil 是的,我还在重新加载之前从扩展列表中删除了 curl,所以我知道扩展列表“有效”。为什么 php.ini 中的某些扩展名有分号?

标签: php cryptography libsodium sodium


【解决方案1】:

我上周末遇到了同样的问题。 我有全新安装的 Windows 10 用作我的新开发机器 我还用 Apache Netbeans 11.1 安装了 JDK 以及新安装的 XAMMP (xampp-windows-x64-7.3.11-0-VC15-installer) 安装后,我修改了 php.ini 以取消注释“extension=sodium”,并开始使用 xampp shell 中的命令“php -m”检查钠在 php 中是否处于活动状态。在那里我看到钠的模块被加载了。

在我的 test.php 中,我输入了一行:

     <?php
       echo random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
      ?>

检查它是否有效。不幸的是,我收到了一个错误:

 Warning: Use of undefined constant SODIUM_CRYPTO_SECRETBOX_KEYBYTES - assumed 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES' (this will throw an Error in a future version of PHP) 

我在这个论坛和其他论坛上进行了扩展研究以找到答案,但直到我尝试了 Jim (https://stackoverflow.com/a/49142981/10509146) 的方法后才找到答案 他确实回到了早期版本的 php,但答案在他的第 4 步中。将 libsodium.dll 复制到“apache/bin”文件夹。 和 libsodium 工作! 我完全卸载了 Xampp 并再次尝试。 结果相同。 您需要做的就是将 libsodium.dll 从“xampp/php”文件夹复制到“xampp/apache/bin”文件夹并取消注释 php.ini 中的扩展名,然后就可以开始了。

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多