🐘
M1(Apple Silicon)での phpenv で php がうまく動かないエラー対応
現象
brew upgrade
直後に phpenv
で動かしている php が動かなくなった
dyld[59013]: Library not loaded: /usr/local/opt/icu4c/lib/libicuio.69.dylib
Referenced from: /Users/qst/.phpenv/versions/7.4.20/bin/php
Reason: tried: '/usr/local/opt/icu4c/lib/libicuio.69.dylib' (no such file), '/usr/local/lib/libicuio.69.dylib' (no such file), '/usr/lib/libicuio.69.dylib' (no such file), '/usr/local/Cellar/icu4c/70.1/lib/libicuio.69.dylib' (no such file), '/usr/local/lib/libicuio.69.dylib' (no such file), '/usr/lib/libicuio.69.dylib' (no such file)
原因
icu4c
のバージョンが切り替わったことで、phpenv
が参照している icu4c
のバージョンが合わなくなったことが原因。
対応
icu4c
のバージョンを 69.0
に切り替えればOK
(エラーに応じて、切り替えるべきバージョンは変わります)
Fromula
ディレクトリに移動(M1, M2などのApple Siliconの場合)
$ cd /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula
対象のバージョンのコミットハッシュを検索
$ git log --oneline icu4c.rb | grep 69
$ git switch -d {対象のコミットハッシュ}
指定したバージョンで icu4c
の再インストール
$ HOMEBREW_NO_AUTO_UPDATE=1 brew reinstall ./icu4c.rb
icu4c
のバージョンを確認
$ brew info icu4c
ここまでで、 php が動くようになるはず
最後に brew upgrade
で icu4c
のバージョンが上がるのを防ぐ
$ brew pin icu4c
参考にした記事
Discussion