无法加载动态库 'php_libsodium'

Unable to load dynamic library 'php_libsodium'

我正在尝试安装 libsodium php 扩展(https://pecl.php.net/package/libsodium/1.0.6/windows)。

当我 运行 php -m 时,libsodium 出现在列表中。 但是,当我转到 phpinfo 时,它没有列出。

我还注意到 apache 给我错误:PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_libsodium.dll' - The specified module could not be found.\r\n in Unknown on line 0

我已经检查了多次,文件确实存在并且符合正确的体系结构和线程安全性,所以我不知道还有什么可能导致此问题。

如有任何帮助,我们将不胜感激。

根据我的经验,您收到 'Unable to load dynamic library' 消息的原因有以下几个:

  1. 您在 php.ini 中启用了一个模块,但是 PHP 找不到 dll 文件(它不存在,或者在错误的目录中)。
  2. dll 文件针对错误的体系结构(32 位与 64 位)或错误的线程模型(例如,线程安全的 DLL 被用于 [=28= 的非线程安全版本)编译]).
  3. dll 有一些无法找到的依赖项。例如,您可能需要将一些额外的 .dll 文件放在 PHP 可以找到它们的位置(例如在主 PHP 目录中)。

在您的情况下,鉴于您指出使用 php -mphinfo() 报告的 PHP 之间存在差异(大概在网页中),#1 可能是原因。在 php.ini 中的 extension_dir 设置指定的位置查找扩展。如果这是一个相对路径,那么它在 Web 服务器上下文中的解析可能与在命令行中 运行 时的解析不同。

尝试安装 libsodium:

验证 php 和 pecl php-v PECL 版本

如果您有 php7.X 那么: sudo pecl install -f libsodium

如果您在 Docker 容器内: pecl 安装-f libsodium

将 sodium.so 扩展添加到 php.ini。

sudo echo "extension = sodium.so" > /etc/php/7.1/mods-available/sodium.ini sudo phpenmod 钠

验证是否安装了扩展 php-我 | grep "sodium"

尝试将 xampp\php\libsodium.dll 复制到 xampp\apache\bin\libsodium.dll 并重新启动 apache。 关于XAMPP 8.0.5 我的帮助。