我日常的开发环境是 Manjaro Linux,PHP 是自己编译的 7.2。当我升级系统后(起初不知道升级了,电脑开机很久也没关机),发现我的 PHP 炸了!!!

php: error while loading shared libraries: libicui18n.so.73: cannot open shared object file: No such file or directory

报了这个错误~

libicui18n 是国际化组件 Unicode(ICU) 库的一部分,且 PHP 正是依赖它来处理国际化功能。

libicui18n.so.73 找不到了?估计是升级后变成 74 或者 75 了?还是被删了……

搜了资料发现可以自己安装:

yay -S icu

对了,如果你是其他发行版,可以参考以下命令:

# Ubuntu/Debian 系统
sudo apt-get update
sudo apt-get install libicu-dev

# CentOS/RHEL 系统
sudo yum update
sudo yum install libicu

# Fedora 系统
sudo dnf update
sudo dnf install libicu

然而,我发现我的系统中已经安装了 icu 库,确实是 74 版本:

ls /usr/lib/libicui18n.so.74

OK,那我创建一个符号链接,将已安装版本的库链接到 PHP 尝试加载的版本,这下总可以了吧!

sudo ln -s /usr/lib/libicui18n.so.74 /usr/lib/libicui18n.so.73

很意外,报了另一个错误?

php: error while loading shared libraries: libicuuc.so.73: cannot open shared object file: No such file or directory

继续:

sudo ln -s /usr/lib/libicuuc.so.74 /usr/lib/libicuuc.so.73

好家伙,又报另一个错:

php: error while loading shared libraries: libicudata.so.73: cannot open shared object file: No such file or directory

sudo ln -s /usr/lib/libicudata.so.74 /usr/lib/libicudata.so.73

补齐了以上 3 个符号链接后,我再次尝试运行 PHP,终于能用了!!!

如果你也遇到类似的报错,可以参考。不过,对于大版本的更新,有可能链接后是没办法工作的,这个时候还是重新编译 PHP 吧!

以后可能还会遇到这个问题,索性就记录下来,明天除夕,提前祝大家新你快乐~

暂无评论