在项目中包含 Paragonie Halite 找不到变量和函数

2023-12-29

我已经在 Windows 上为 PHP 7 安装了 libsodium,并且正在使用 PHPStorm 开发我的项目。我还安装了 Paragonie 的 Halite,如果 libsodium 扩展安装不正确,它甚至无法安装。 IDE 还会找到所使用的函数,当单击变量等时,它会打开 libsodium 的安装文件。

但不幸的是,在我的设置中,我收到以下错误:

Uncaught Error: Undefined constant 'Sodium\CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE' in C:\Server\nginx-1.11.1\html\mywebsite\vendor\paragonie\halite\src\KeyFactory.php:344

我的 index.php 文件如下所示:

    <?php
    require_once 'vendor/autoload.php';

    spl_autoload_register(function ($class) {
        require_once $class . '.php';
    });

    $router = new AltoRouter();

    $router->setBasePath('/' . basename(__DIR__));

    require_once 'config/routes.php';

    $match = $router->match();

    $GLOBALS['db'] = new \config\database(true, null);

    try
    {
        if ($match) {
            $routeController = new Modules\Core\RouteController($match);
            echo $routeController->bootstrap();
        }
    }
    catch (Exception $ex)
    {
        //@todo log every Exception
    }

我还使用 Jquery 提交表单,这会成功执行以下函数(未找到 libsodium 函数/变量):

public function hash($password)
{
    $this->setEncryptionKey();
    return Password::hash(
        $password, // string
        $this->encryption_key      // \ParagonIE\Halite\Symmetric\EncryptionKey
    );
}

public function check($stored_hash, $password)
{
    try {
        if (Password::verify(
            $password, // string
            $stored_hash,
            $this->encryption_key
        )) {
            return true;
        }
    } catch (\ParagonIE\Halite\Alerts\InvalidMessage $ex) {
        // Handle an invalid message here. This usually means tampered ciphertext.
        throw new \Exception($ex);
    }
}

我已将 php_libsodium.dll 安装在扩展目录中,并将 libsodium.dll 放在 php 服务器的目录中。只是为了尝试,我稍后也将其放入 system32 目录和 Syswow64 目录中 - 两者都没有改变任何内容。

我刚刚用 Composer 安装了 paragonie 的 halite 库,但不幸的是使用它比我想象的要难。我还尝试使用不使用 Halite 的 libsodium 扩展,但这会导致类似的错误,即找不到所需的类、常量和函数等。

我也尝试过更改我的自动加载器,但奇怪的是 IDE 发现一切都没有问题,但在浏览器中执行脚本却没有。


为了使用 Halite 2.x,您需要:

  • Libsodium 1.0.9+(如果您在编译 .9 时遇到问题,最好使用 1.0.10)
  • PECL Libsodium 1.0.3+(最好是 1.0.6)针对 libsodium 1.0.9+ 编译。

验证是否已设置的简单方法是:

<?php
use \ParagonIE\Halite\Halite;

var_dump(Halite::isLibsodiumSetupCorrectly());

如果您想了解有关失败原因的更多具体信息,只需运行以下命令:

<?php
use \ParagonIE\Halite\Halite;

// TRUE enables verbose output:
Halite::isLibsodiumSetupCorrectly(true);

最有可能的是,您需要卸载/重新安装针对较新版本的共享库编译的 PHP 扩展。

There's an RFC under discussion for PHP 7.1 right now https://wiki.php.net/rfc/libsodium that will make this painless in the future, if accepted. The RFC passed, years later; libsodium will be in PHP 7.2.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在项目中包含 Paragonie Halite 找不到变量和函数 的相关文章

  • 在 while 循环内查询可以吗?

    我在一个数据库中有两个表 我正在查询第一个表限制 10 然后循环结果 在 while 循环内 我使用第一个查询中的数据作为参数再次执行另一个查询 以下是该脚本的示例
  • PHP 文件由浏览器下载,而不是由本地开发服务器(MAMP)处理

    一切都很顺利 直到我添加AddHandler application x httpd php5s php到本地服务器文档根目录中的 htaccess 文件 根据我正在使用的站点 我经常更改该文件 因为我访问时这样做了http 本地主机 88
  • WordPress 计划事件未在设定时间触发

    在 WordPress 中 我正在创建一个插件 用于向用户发送电子邮件 为此 我使用 WordPresscron工作 所以基本上它要做的就是每小时向用户发送电子邮件 所以我的代码看起来像这样 public function construc
  • 将 XML 数据提取到 php [重复]

    这个问题在这里已经有答案了 我正在尝试从 XML 文件中提取数据 http freegeoip net xml google com http freegeoip net xml google com 您可以看到该文件的内容类似于
  • preg_replace_callback 要求参数 2 是一个有效的回调...卡住了!

    public function make url clickable cb matches ret url matches 2 if empty url return matches 0 removed trailing from URL
  • 命令运行时从 shell_exec 命令获取输出

    我正在编写一个 PHP 脚本网页 该网页旨在接受先前上传到服务器的 JFFS2 图像的文件名 然后 该脚本将使用映像重新刷新服务器上的分区 并输出结果 我一直在用这个 tmp shell exec update flash v filena
  • 上传非常大的文件(>5GB)

    我需要你的帮助 我想用 HTML JQuery 和 PHP 创建一个上传脚本 是否可以编写一个可以上传非常大的文件 gt 5 GB 的脚本 我已经尝试使用 FileReader FormData 和 Blobs 但即使使用这些 我也无法上传
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • 如何在Wamp服务器中启用SSL?

    我尝试在网上搜索它 但我很困惑 我没有得到任何澄清 逐步教程 http blog facilelogin com 2008 07 enabling ssl on wamp html 从链接复制 在 WAMP 上启用 SSL 本分步指南介绍了
  • fsockopen() 和 SSL 出错,“无法启用加密”

    我正在尝试连接到 Nominet EPP 测试台 但收到 无法启用加密 的消息 这似乎是一个罕见的错误 没有记录的解决方案或原因 用行 socket fsockopen ssl testbed epp nominet org uk 700
  • 更新查询增量字段加上 1 codeigniter 函数 [重复]

    这个问题在这里已经有答案了 我想在 codeigniter 项目中将字段值增加到当前值加 1 所以 我做了一个功能 但它不起作用 我的职能是 function increse field by 1 table name fieldToInc
  • 迁移时未找到 Laravel 致命错误类

    我已经跑了artisan migrate reset 我删除了一些迁移文件 因为我不再需要这些表 I ran composer dump autoload其次是artisan dump autoload I ran artisan migr
  • 从字符串中删除第一个和最后一个字符

    我有这个 dataList one two three list explode dataList echo pre print r list echo pre 其输出 gt Array gt 0 gt gt 1 gt one gt 2 g
  • 使用 PHP 和 jSON 从 MySQL 获取 UIImage

    我正在开发一个小型新闻阅读器 它通过对 URL 执行 POST 请求来从网站检索信息 响应是一个带有未读新闻的 JSON 对象 例如 应用程序上的最新新闻的时间戳为 2013 03 01 当用户刷新表时 它会发布 domain com ap
  • 正则表达式:如何表达没有下划线的 \w

    有没有简洁的表达方式 w but without 即 w 中包含的所有字符 除了 我问这个是因为我正在寻找最简洁的方式来表达域名验证 域名可以包含小写和大写字母 数字 句号和破折号 但不能包含下划线 w 包括以上所有内容 加上下划线 那么
  • 向 yahoo 和 hotmail 用户发送电子邮件?

    我正在使用 php 和 mysql 每次用户在我的网站上注册时 我都会使用 php mail 发送一封电子邮件进行身份验证 最近我发现 很多Yahoo和Hotmail用户还没有激活他们的帐户 假设 1000 个用户中 只有 200 个被激活
  • 如何从 php 中的 .doc 文件获取页面数,以下代码适用于 .docx 而不是 .doc

    此代码工作 docx 格式文档 但我需要 doc 格式文档计数 php 中的页数 function CountPagesDocx filename zip new ZipArchive if zip gt open filename tru
  • Laravel中with()和compact()有什么区别

    功能有什么区别with and compact 在 Laravel 中这两个例子 示例1 return View make books index gt with booksList booksList 示例2 return View ma
  • Laravel 更新雄辩事件:获取数据

    我一直在读有关雄辩事件的文章 与模型的每次交互都有一个事件 创建 创建 更新 更新 保存 保存 删除 删除 恢复 恢复 我想知道模型更新后的数据以及之前的数据 是否可以 因为文档没有太多关于如何使用这些事件的信息 您正在寻找getDirty
  • 测验程序的 MySql 数据库设计

    我目前正在开发一个项目 主要是创建一个测验应用程序 它将能够进行包含 10 到 20 个问题的多项选择题或简答题的测验 它需要能够根据正确答案检查用户的答案 然后对用户的答案进行评分 稍后 我可能会实现一个后端功能来在线创建测验 但现在我将

随机推荐

  • 在 Clojure 中测试对象是否为 Java 原始数组

    Clojure 中检测对象是否为 Java 原始数组的最佳方法是什么 我需要这个的原因是对原始数组进行一些特殊处理 这可能看起来像 if byte array object handle byte array object 它是一段对性能相
  • Python 每个模块和包一个类

    我正在尝试用 Python 构建我的应用程序 从 C Java 背景回来后 我喜欢每个文件一个类的方法 我希望我的项目树看起来像这样 Service Database DbClass1 py DbClass2 py Model DbMode
  • 用于保持您的网站被 Google Bing 等索引的 PHP 库

    我需要一些能够对我的网址进行索引和描述的库 所以我想对它说类似的话 用一些关键词索引这个新网址 www bla bla com new url 或类似的东西 我想确定的是 如果我告诉我的库我的新 URL Google 和其他人将 100 尽
  • 获取页面上所有 javascript 错误/javascript 错误处理

    我希望能够向自己发送页面上的所有 javascript 错误 我是一名扩展开发人员 因此以下内容重点强调在调用 dom 之前确保 dom 已准备好 我研究了添加一些功能throw还可以发送或邮寄例外情况 但我发现这是不可能的 1 主要解决这
  • 删除/避免向 URL 添加目标链接

    对于这里的 jQuery JavaScript 专家来说 这可能很简单 但我在网络上找不到解决方案 Case 我在页面底部有一个链接 上面写着Back to Top 该链接只是一个目标链接 如下所示 a href top class sta
  • 从 char 中减去字符“0”如何将其更改为 int?

    此方法适用于 C C 和 Java 我想知道其背后的科学原理 的值char可以是 0 255 其中不同的字符映射到这些值之一 数字也是按顺序存储的 0 通过 9 但它们通常也不存储为前十个char价值观 也就是说 角色 0 没有 ASCII
  • 绘图画布编辑器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我面临着使用canvas标签和使用JavaScript绘制复杂图像的问题 我需要一个工具 或者我们可以
  • 如何检查时间戳(纪元时间)是今天还是昨天的[android]

    我想将时间戳 纪元时间 转换为人类可读的字符串 为此我正在使用calendar setTimeInMillis timeSinceEpoch 函数创建日历对象并以人类可读的格式获取日期时间字符串 我很困惑 如何找出时间戳 纪元时间 是今天或
  • 代码库中的浏览器功能检测 - 我正在使用...? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 http caniuse com http caniuse com 是一个非常有用的工具 可以确定哪些
  • 处理用Python解析的csv文件中的额外换行符(回车符)?

    我有一个 CSV 文件 其中包含包含换行符的字段 例如 A B C D E F 123 456 tree very bla indigo 在本例中 第二行中的第三个字段是 tree n 我尝试了以下方法 import csv catalog
  • 在加载控制器之前验证路线先决条件

    我正在用 Angular 编写一个单页应用程序 特别是角 dart https github com angular angular dart 但我假设这个问题仍然适用于 AngularJS 以以下路线为例 login 期望没有人登录 如果
  • automake环境变量条件

    我有一个文件 Makefile am 我用来生成 Makefile 在生成的 Makefile 中我想要类似的内容 ifndef SOURCECODEPATH SOURCECODEPATH home root source code pat
  • 如何允许 NSMutableDictionary 接受“nil”值?

    我有这样的声明 custData setObject rs stringForColumnIndex 2 forKey email where rs stringForColumnIndex 2 从 SQLite3 d b 获得的值为nil
  • jQuery UI 自动完成的 JSON 格式

    的文档jQuery UI 自动完成 http docs jquery com UI Autocomplete指出source属性可以设置为以 JSON 格式返回建议项目的 URL 但是 它没有进一步详细说明此 JSON 结果的结构应该是什么
  • 绘制平均值和标准差

    我在不同的 x 点有多个函数值 我想在 python 中绘制平均值和标准差 就像答案一样这个问题 https stackoverflow com questions 19797846 plot mean standard deviation
  • 尝试读取不存在的文件夹`/private/tmp/CocoaPods/Lint/Pods/

    AM 在验证 pod 规格时得到此信息 Attempt to read non existent folder private tmp CocoaPods Lint Pods Test 请帮忙 你需要跑git tag x x x and g
  • C# YamlDotNet 库是否支持合并键?

    我对 C YamlDotNet 库有疑问http www aaubry net page YamlDotNet http www aaubry net page YamlDotNet 您知道该库是否支持 合并键 吗 http yaml or
  • asp.net core RC2图像不显示

    我想做的是显示网络根文件夹中的图像 这就是我尝试执行此操作的方式 下面的课程只是实验性的 只是我尝试的例子 目前正在读取的文件夹中只有一张图像 rootPath 也取自 hostingEnvironment WebRootPath publ
  • 在 python 中将一个 tar 中的文件添加到另一个 tar 中

    我想制作一份 tar 的副本 删除一些文件 基于它们的名称以及可能的其他属性 如符号链接等 因为我已经在 python 中打开了 tar 文件 所以我想在 python 中执行此操作 我知道 TarFile getmembers 返回 Ta
  • 在项目中包含 Paragonie Halite 找不到变量和函数

    我已经在 Windows 上为 PHP 7 安装了 libsodium 并且正在使用 PHPStorm 开发我的项目 我还安装了 Paragonie 的 Halite 如果 libsodium 扩展安装不正确 它甚至无法安装 IDE 还会找