Debian11.5下PHP8.1报错:undefined symbol: crypto_core_ristretto255_scalar_invert
问题
在Debian 11.5(内核版本5.10)系统中安装PHP8.1及相关扩展后,执行php --version时触发未定义符号错误:
$ php --version php: symbol lookup error: php: undefined symbol: crypto_core_ristretto255_scalar_invert
使用的安装命令如下:
$ sudo apt install php8.1 $ sudo apt install php8.1-cli php8.1-common php8.1-curl php8.1-mbstring php8.1-mysql php8.1-xml php8.1-zip libapache2-mod-php php-imagick php-gd php8.1-mysql php8.1-gd
补充排查信息:
$ ldd /usr/bin/php8.1 | grep crypto libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f5f05362000) $ ldd /usr/bin/php8.1 | grep sodium libsodium.so.23 => /usr/local/lib/libsodium.so.23 (0x00007fda8ef19000) $ ll /usr/local/lib/libsodium.so.23 lrwxrwxrwx 1 root staff 19 Mar 10 2019 /usr/local/lib/libsodium.so.23 -> libsodium.so.23.2.0 $ ll /usr/local/lib/libsodium.so.23.2.0 -rwxr-xr-x 1 root staff 2.1M Mar 10 2019 /usr/local/lib/libsodium.so.23.2.0
解决方法
问题根源
系统优先加载了/usr/local/lib下的旧版本libsodium(23.2.0,2019年编译),而PHP 8.1依赖的crypto_core_ristretto255_scalar_invert符号在这个旧版本中不存在。Debian 11官方仓库提供的libsodium包(版本1.0.18-1)包含该符号,且与系统环境兼容。
修复步骤
- 删除手动安装的旧版本libsodium文件
sudo rm /usr/local/lib/libsodium.so.23 /usr/local/lib/libsodium.so.23.2.0 - 安装官方仓库的libsodium包
sudo apt update sudo apt install libsodium23 - 更新系统库缓存,确保优先调用系统官方库
sudo ldconfig - 验证修复效果
php --version
内容的提问来源于stack exchange,提问作者paddel10
相关产品推荐
相关产品推荐

