我在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()启用了钠,编译版本为2.0.1,库版本为1.0.13。我做错了什么?
答案 0 :(得分:2)
libsodium的PHP API在扩展版本2.0.0中已更改。
最初,所有函数都在\Sodium\
命名空间中。
然而,在PHP开发人员对其包含在PHP 7.2中投票之后,决定将所有内容移动到全局命名空间。
因此,以前的\Sodium\library_version_major()
现在是sodium_library_version_major()
。
答案 1 :(得分:1)
对于那些安装了Pecl版本的Soidum并在php.ini中启用了它的人(extension = sodium.so)并具有相同的错误,例如调用未定义 ...
重启Apache&nginx之后,由于缺乏成功,最终Reboot服务器无法正常工作。
PHP 7.3和> 7.3 = libsodium 2.1
希望对您有所帮助。
答案 2 :(得分:1)
对于那些无法得到答案的人.. 那是因为它应该是:
<?php
var_dump([
SODIUM_LIBRARY_MAJOR_VERSION,
SODIUM_LIBRARY_MINOR_VERSION,
SODIUM_LIBRARY_VERSION
]);