macOS 下 brew 安装 Rust 导致 PHP 报错:dyld[16856]: Library not loaded: /opt/homebrew/opt/libavif/lib/libavif.15.dylib
今天为了本地编译一个开源软件,用 homebrew 安装了 rustc
,结果后来发现导致 php 命令报错。
dyld[16856]: Library not loaded: /opt/homebrew/opt/libavif/lib/libavif.15.dylib
Referenced from: <87C1A268-34E4-396F-8BBC-D5591064E333> /opt/homebrew/Cellar/gd/2.3.3_5/lib/libgd.3.dylib
Reason: tried: '/opt/homebrew/opt/libavif/lib/libavif.15.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/libavif/lib/libavif.15.dylib' (no such file), '/opt/homebrew/opt/libavif/lib/libavif.15.dylib' (no such file), '/usr/local/lib/libavif.15.dylib' (no such file), '/usr/lib/libavif.15.dylib' (no such file, not in dyld cache), '/opt/homebrew/Cellar/libavif/1.0.1/lib/libavif.15.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/libavif/1.0.1/lib/libavif.15.dylib' (no such file), '/opt/homebrew/Cellar/libavif/1.0.1/lib/libavif.15.dylib' (no such file), '/usr/local/lib/libavif.15.dylib' (no such file), '/usr/lib/libavif.15.dylib' (no such file, not in dyld cache)
Abort trap: 6
搜了一下发现没有结果,只能尝试自己解决。
查看错误,发现直接原因是 php 的 gd 库依赖这个 libavif.15.dylib
,但我估计安装 rustc 的时候,brew 默认给我升级了 libavif
,因为现在 /opt/homebrew/opt/libavif/lib/
目录下只有 16 版本的了:
TMBA:lib tony$ ll /opt/homebrew/opt/libavif/lib/
total 296
drwxr-xr-x 8 tony admin 256B 9 28 02:11 .
drwxr-xr-x 11 tony admin 352B 9 27 20:53 ..
drwxr-xr-x 3 tony admin 96B 8 30 05:58 cmake
-rw-r--r-- 1 tony admin 146K 9 27 20:53 libavif.16.0.1.dylib
lrwxr-xr-x 1 tony admin 20B 8 30 05:58 libavif.16.dylib -> libavif.16.0.1.dylib
lrwxr-xr-x 1 tony admin 16B 8 30 05:58 libavif.dylib -> libavif.16.dylib
drwxr-xr-x 3 tony admin 96B 9 27 20:53 pkgconfig
那尝试一下直接用个软链接链接过去:
$ cd /opt/homebrew/opt/libavif/lib/
$ ln -s ./libavif.16.dylib ./libavif.15.dylib
再次查看目录下文件,多了一条:
lrwxr-xr-x 1 tony admin 18B 9 28 02:11 libavif.15.dylib -> ./libavif.16.dylib
最后测试了一下 php 命令,问题解决。
至于 php 的 gd 库功能是否正常,等用到了再补充吧。