我正在尝试安装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.rn in Unknown on line 0
我已经检查了多次,并且文件肯定在那里,并且与正确的体系结构和线程安全匹配,所以我不知所措。
任何帮助将不胜感激。
根据我的经验,您可以出于几个不同的原因获得'无法加载动态库'消息:
- 您已经启用了php.ini中的模块,但是PHP找不到DLL文件(要么不存在,要么在错误的目录中)。
- DLL文件是针对错误的架构(32位VS 64位)或错误的线程模型(例如,在PHP的非线程安全版本上使用的线程安全dll)的编译。
- dll有一些找不到的依赖项。例如,您可能需要一些其他.dll文件要放在PHP可以找到的位置(例如,在主PHP目录中)。
在您的情况下,鉴于您表示使用php -m
和phinfo()
(大概在网页中)的PHP报告之间有区别,因此#1可能是原因。在php.ini中的extension_dir
设置指定的位置中寻找扩展。如果这是一个相对路径,那么它可能在Web服务器的上下文中与从命令行运行时的解析。
尝试复制xampp php libsodium.dll to xampp apache bin libsodium.dll和restart apache。在xampp 8.0.5我的帮助。
尝试安装libsodium:
验证PHP和PECLphp -vPECL版本
如果您有php7.x,则:sudo pecl安装-f libsodium
如果您在Docker容器中:pecl install -f libsodium
将钠添加到php.ini。
sudo echo" extension = sodium.so">/etc/php/7.1/mods-available/sodium.inisudo phpenmod钠
验证安装了扩展php -i |grep"钠"