1

我已经在 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。我究竟做错了什么?

4

3 回答 3

5

libsodium 的 PHP API 在扩展的 2.0.0 版本中发生了变化。

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

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

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

于 2017-07-15T23:45:59.647 回答
1

对于那些安装 P​​ecl 版本的 Soidum 并在 php.ini (extension=sodium.so) 中启用它并且有相同错误的人,例如Call to Undefined ...

在重新启动 Apache 和 Nginx 并且没有成功之后,最终重新启动服务器得到了钠工作 exteremly。

PHP 7.3 & >7.3 = libsodium 2.1

希望能有所帮助。

于 2020-01-10T09:29:23.177 回答
1

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

<?php
var_dump([
    SODIUM_LIBRARY_MAJOR_VERSION,
    SODIUM_LIBRARY_MINOR_VERSION,
    SODIUM_LIBRARY_VERSION
]);
于 2021-03-22T18:35:26.947 回答