PHP 8.1 Sodium扩展显示已启用但目录无sodium.iso文件问题
现象原因
这是Ubuntu官方APT源PHP 8.1包的默认打包规则导致的正常情况,不属于配置错误:
- 首先纠正笔误:PHP动态扩展的文件后缀是
.so而非.iso,你在/usr/lib/php/20210902目录找不到sodium.so,是因为Ubuntu打包PHP 8.1时已经把sodium扩展静态编译进PHP核心二进制了,它不是以动态共享对象文件的形式独立存在,自然不会出现在扩展目录中。 - 找不到对应ini启用配置的原因和静态编译逻辑直接相关:只有以动态.so文件形式存在的扩展,才需要在php.ini或者
conf.d目录下添加extension=xxx.so的配置声明才能加载。静态编译进核心的扩展会在PHP启动时默认加载,完全不需要额外配置项,所以你在CLI、FPM、Apache等所有SAPI的配置里都找不到sodium的启用配置。
php.ini里保留的sodium相关注释行,是PHP上游源码自带的示例配置,仅用于动态编译sodium扩展的场景,Ubuntu打包时没有删除这些注释内容而已,不影响实际加载逻辑。
你可以执行以下命令查看所有静态编译进PHP核心的扩展列表,就能看到sodium在返回结果中:php -r "print_r(get_loaded_extensions(true));"
内容的提问来源于stack exchange,提问作者Fakhar Anwar
相关产品推荐
相关产品推荐

