【问题标题】:libsodium "Call to undefined function" errorlibsodium“调用未定义函数”错误
【发布时间】:2017-07-15 22:30:57
【问题描述】:

我已经在 ubuntu 16.04 上安装了 libsodium 和 libsodium-php,但是当我运行时:

`<?php
var_dump([
    \Sodium\library_version_major(),
    \Sodium\library_version_minor(),
    \Sodium\version_string()
]);`

我收到一条错误消息:

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

根据 phpinfo() 启用 Sodium,编译版本为 2.0.1,库版本为 1.0.13。我做错了什么?

【问题讨论】:

    标签: php ubuntu-16.04 libsodium


    【解决方案1】:

    用于 libsodium 的 PHP API 在扩展的 2.0.0 版中已更改。

    最初,所有函数都在 \Sodium\ 命名空间中。

    但是,在 PHP 开发人员投票决定将其包含在 PHP 7.2 中之后,决定将所有内容移至全局命名空间。

    所以,以前的\Sodium\library_version_major() 现在是sodium_library_version_major()

    【讨论】:

    • \Sodium\library_version_major() 替换为sodium_library_version_major() 会导致同样的错误。
    • 错误示例,因为该示例已替换为 SODIUM_LIBRARY_MAJOR_VERSION 常量。但实际函数现在有一个 sodium_ 前缀。
    • 我也遇到了问题,谢谢你的回答。这些新功能是否有官方文档?显然他们更改了更多函数名称,因为我无法访问sodium_crypto_pwhash_scryptsalsa208sha256_str()。在 libsodium 网站上,我只能看到过时的示例。
    • crypto_pwhash_scryptsalsa208sha256_str() 不再存在。它也不再存在于 libsodium 的最小构建中,因为很长一段时间以来一直存在高级 crypto_pwhash() API。所以,请使用sodium_crypto_pwhash()sodium_crypto_pwhash_str()sodium_crypto_pwhash_str_verify()
    • 我做了同样的事情,并且在 phpinfo() 中启用了它。但是sodium_library_version_major() 仍然出现同样的错误。
    【解决方案2】:

    对于那些安装了 Pecl 版本的 Soidum 并在 php.ini (extension=sodium.so) 中启用它并且有同样的错误像 Call to Undefined ...

    在重新启动 Apache 和 nginx 并没有成功后,最终重新启动服务器让钠工作 exteremly。

    PHP 7.3 & >7.3 = libsodium 2.1

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      对于那些无法得到答案的人.. 那是因为它应该是:

      <?php
      var_dump([
          SODIUM_LIBRARY_MAJOR_VERSION,
          SODIUM_LIBRARY_MINOR_VERSION,
          SODIUM_LIBRARY_VERSION
      ]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-10
        • 2015-07-02
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多