6

我正在尝试安装 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

我已经检查了多次,文件肯定在那里并且匹配正确的架构和线程安全,所以我不知道还有什么可能导致这种情况。

任何帮助,将不胜感激。

4

3 回答 3

6

根据我的经验,您可能会因为几个不同的原因收到“无法加载动态库”消息:

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

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

于 2017-03-08T23:09:09.470 回答
1

尝试安装 libsodium:

验证 php 和 pecl php -v pecl 版本

如果你有 php7.X 然后: sudo pecl install -f libsodium

如果您在 Docker 容器中: pecl install -f libsodium

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

须藤回声“扩展=钠.so”> /etc/php/7.1/mods-available/sodium.ini 须藤phpenmod钠

验证是否安装了扩展 php -i | grep“钠”

于 2019-11-15T08:37:27.433 回答
1

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

于 2021-05-07T08:19:09.550 回答