PHPの実行時に「dyld[21331]: Library not loaded: /usr/local/opt/icu4c/lib/libicuio.72.dylib」のエラーが発生した時の対処法
MacでPHPの開発をしている時に、以下のエラーが発生した。
dyld[21331]: Library not loaded: /usr/local/opt/icu4c/lib/libicuio.72.dylib
上記のエラーが発生したタイミングは、Homebrewのupdateをした時で、PHPが使っているicu4cというライブラリのバージョンを上げた時だ。
この記事では、上記エラーの解決策を紹介していく。
開発環境について
- Mac 13.4.1(22F82)
- PHP 8.1.19
- Homebrew 4.0.26-29-g9a482de
解決策
解決策としては、icu4cライブラリのver 72.1をインストールして/usr/local/opt/icu4c/lib/
のディレクトリにシンボリックリンクを通せば良い。
まずは以下の手順でicu4cのver72をインストールする。codebug/taps
の部分は任意のリポジトリ名で良い。
brew tap-new codebug/taps
brew extract icu4c codebug/taps --version 72
brew install codebug/taps/icu4c@72
icu4cのver72が/usr/local/opt/icu4c@72/lib
のディレクトリにインストールされる。
次に以下のシェルスクリプトを実行してシンボリックリンクを貼る。
for file in "libicudata" "libicui18n" "libicuio" "libicutest" "libicutu" "libicuuc"; do
ln -s "/usr/local/opt/icu4c@72/lib/$file.72.dylib" "/usr/local/opt/icu4c/lib/$file.72.dylib"
done
試しにphp -v
を実行してバージョン表示が正常にされていればOK。
試したけどダメだった方法
「PHPが突然Library not loaded: /path/to/libicui18n.64.dylibとか言い出したときの対処法」の記事を参考にして解決しようとしたが、 上手くいかず。
上記記事ではgit checkout
でicu4cのバージョンを変更してインストールし直す事で解決しようとしているが、
そもそも僕のHomebrewのバージョンではbrew switch
コマンドが使えないため、解決に至らなかった。