Ubuntu 22.04下PHP8.2启动时无法加载sodium动态库的问题解决求助
Ubuntu 22.04下PHP8.2启动时无法加载sodium动态库的问题解决求助
我之前在Ubuntu 22.04用PHP8.2的时候也踩过这个坑,明明已经装了sodium扩展,却一直报加载失败的警告。给你几个亲测有效的排查和解决步骤,你可以挨个试试:
先确认PHP版本与扩展路径的匹配性
你报错里的路径/usr/lib/php/20190902是PHP7.4的扩展目录(20190902是PHP7.4的API版本),但你用的是PHP8.2,它的API版本是20220829,大概率是扩展配置指向了旧版本的路径。- 先查当前PHP8.2的扩展目录:
php -i | grep "extension_dir" - 找到sodium的配置文件,一般在
/etc/php/8.2/cli/conf.d/或/etc/php/8.2/fpm/conf.d/下,比如20-sodium.ini,打开看看里面是不是写了旧路径的绝对引用,如果是,改成只写extension=sodium.so,或者替换成刚才查到的正确扩展目录路径。
- 先查当前PHP8.2的扩展目录:
确保安装的是PHP8.2对应的sodium包
有时候系统默认安装的php-sodium可能是对应旧PHP版本的,比如之前装过PHP7.4的话,这个包可能和8.2不兼容。- 先卸载现有包:
sudo apt remove --purge php-sodium - 安装PHP8.2专属的版本:
sudo apt install php8.2-sodium - 如果用的是PHP-FPM,记得重启服务:
sudo systemctl restart php8.2-fpm
- 先卸载现有包:
检查扩展文件是否存在于正确目录
执行find /usr/lib/php -name sodium.so,看看有没有20220829目录下的sodium.so文件。如果没有,说明安装过程出了问题,重新执行上面的安装命令试试;如果存在,可以尝试在ini文件里直接指定这个绝对路径,比如extension=/usr/lib/php/20220829/sodium.so,然后再测试。最后验证修复效果
执行php -v确认当前用的是PHP8.2,然后用php -m | grep sodium和php -r "var_dump(extension_loaded('sodium'));"检查扩展是否正常加载,如果返回bool(true),那警告应该就消失了。
内容来源于stack exchange




