🐘

M1(Apple Silicon)での phpenv で php がうまく動かないエラー対応

2023/04/02に公開

現象

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 upgradeicu4c のバージョンが上がるのを防ぐ

$ brew pin icu4c

参考にした記事

https://qiita.com/tadamatu/items/46d1eb7ea4ed32200b1f

Discussion