无法加载动态库' php_libsodium'

时间:2017-03-08 21:34:59

标签: php apache xampp php-extension 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

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

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:3)

根据我的经验,您可以获得“无法加载动态库”#39;消息有两个不同的原因:

  1. 你已经在php.ini中启用了一个模块,但PHP无法找到dll文件(要么它不存在,要么存在于错误的目录中)。
  2. dll文件是针对错误的体系结构(32位与64位)或错误的线程模型(例如,在非线程安全的PHP版本上使用的线程安全DLL)进行编译的。
  3. dll有一些无法找到的依赖项。例如,您可能需要将一些额外的.dll文件放在PHP可以找到它们的位置(例如,在主PHP目录中)。
  4. 在您的情况下,假设您指出使用php -mphinfo()(可能在网页中)的PHP报告之间存在差异,那么#1可能是原因。在php.ini中extension_dir设置指定的位置查找扩展名。如果这是一个相对路径,那么它在Web服务器上下文中的解析可能与从命令行运行时不同。

答案 1 :(得分:1)

尝试安装libsodium:

验证php和pecl 的PHP -V pecl版本

如果您拥有php7.X,则: sudo pecl install -f libsodium

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

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

sudo echo“ extension = sodium.so”> /etc/php/7.1/mods-available/sodium.ini 苏多phpenmod钠

验证已安装扩展 php -i | grep“钠”

答案 2 :(得分:0)

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