PHP 正在寻找错误的库文件,apt 似乎安装了错误的版本,但我无法删除它

PHP 正在寻找错误的库文件,apt 似乎安装了错误的版本,但我无法删除它

我在 Ubuntu 15.x 上有一个包含 libsodium 的 LAMP 堆栈,运行良好,但升级到 16.04 后,PHP 和 libsodium 无法协同工作

$> php -dextension=libsodium.so -r 'echo "foo";'
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/libsodium.so' - /usr/lib/php/20151012/libsodium.so: cannot open shared object file: No such file or directory in Unknown on line 0

注意这里路径里的数字不要匹配20151012

$> find /usr/lib | grep sodium
/usr/lib/php5/20131226/libsodium.so

也许删除并重新安装?

 $> apt-get purge 'libsodium*
 [ok]
 $> dpkg --get-selections | grep sodium
 [no output]
 $> find /usr/lib | grep sodium
/usr/lib/php5/20131226/libsodium.so

这个库似乎被卡住了。

$> apt-get install libsodium-dev libsodium18
[ok]
$> find /usr -type l -ls | grep sodium
   393054      0 lrwxrwxrwx   1 root     root           34 Feb  6  2016 /usr/share/doc/libsodium-dev/changelog.Debian.gz -> ../libsodium18/changelog.Debian.gz
   132064      0 lrwxrwxrwx   1 root     root           19 Feb  6  2016 /usr/lib/x86_64-linux-gnu/libsodium.so -> libsodium.so.18.0.1
   132056      0 lrwxrwxrwx   1 root     root           19 Feb  6  2016 /usr/lib/x86_64-linux-gnu/libsodium.so.18 -> libsodium.so.18.0.1
$> find /usr/lib | grep sodium
/usr/lib/x86_64-linux-gnu/libsodium.so
/usr/lib/x86_64-linux-gnu/libsodium.a
/usr/lib/x86_64-linux-gnu/libsodium.so.18
/usr/lib/x86_64-linux-gnu/libsodium.so.18.0.1
/usr/lib/x86_64-linux-gnu/pkgconfig/libsodium.pc
/usr/lib/php5/20131226/libsodium.so

但此后 PHP 错误仍然相同。grepping 文件和读取链接/etc/usr没有让我明白为什么 PHP 需要包含20151012(YMD 日期?)的路径

为什么 PHP 卡在了寻找 libsodium 的错误路径上?

答案1

libsodium 是通过 pecl 安装的,但它不是最新的。

pecl uninstall libsodium
apt-get install php5-dev
pecl install libsodium

相关内容