Techvenience

Technology × Convenience - Vue / React / Next / Nuxt / ChatGPTなどのIT技術がもたらす便利さをお伝えします。最近はChatGPTなどのAI技術を使ってブログを書いています。

php再install時のエラーdyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibを解消

php再install時のエラー dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib を解消

f:id:duo-taro100:20160218004611p:plain

$ brew reinstall php@7.1

これを実行すると以下のメッセージが表示されました。またphpのバージョン確認(php -v)でも同様のエラーが出ます。

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
Referenced from: /usr/local/Cellar/php@7.1/7.1.33/bin/php
Reason: image not found

原因は参照しているicu4cのバージョンが違う(ない)ということです。

icu4c/lib/libicui18n.64.dylib

icu4cのver64系を参照しているけど、そんなのないよというエラーです。
icu4cがバージョンアップされたので色々な方が困っていたようです。
なので、icu4cのダウングレードが主な解決方法になります。他にicu4cのバージョンに合わせてphpを入れなおすなどもありますがここでは触れません。

まずは現在のバージョンを確認しましょう。

$ brew info icu4c

私の環境では67.1となっていました。

icu4c: stable 67.1 (bottled) [keg-only]

今回はエラーで「libicui18n.64.dylib」と記載されているので64系に変更したいということです。
「libicui18n.xx.dylib」の「xx」の部分に注目してくださいね。
xxと現在のバージョンが異なる場合はこの記事を読み進めていただけます。
同じ場合はまた別の問題の可能性が高いです。(pathが通っていないとか?)

// まずFormulaディレクトリに移動
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

// icu4cのコミットを確認
$ git log --oneline icu4c.rb


e2c833d326 formulae: use new bottle syntax
// 省略
e7d9d76421 icu4c 67.1
22fb699a41 icu4c: update 66.1 bottle.
c78114de12 icu4c 66.1
a806a621ed icu4c: update homepage and url (#44812)
896d1018c7 icu4c: update 64.2 bottle.
c81a048b0e icu4c: update 64.2 bottle.
44895fce11 icu4c 64.2
e7f0f10dc6 icu4c: remove old code.
bc0c979524 icu4c: update 63.1 bottle.
8ce87beeae icu4c 63.1
575eb4bbef icu4c: secure/fix/follow url(s)
// 省略
9220ee6d43 icu4c: add 10.9 bottle

// 今回は「64.2」に戻したいので、「update 64.2 bottle.」の記載のあるバージョンを使います。
// ここでは以下の二つがありますが、新しい方を使います。どっちでもいいと思いますが
896d1018c7 icu4c: update 64.2 bottle. <- こっちを使う
c81a048b0e icu4c: update 64.2 bottle.

// 使用するバージョン(896d1018c7)をチェックアウト
$ git checkout 896d1018c7 icu4c.rb

// 再インストール実施
$ brew reinstall icu4c

// バージョン確認
$ brew info icu4c

バージョンを確認して自分の求めているバージョンになっていればOKです。

icu4c: stable 64.2 (bottled) [keg-only]

$ php -v
PHP 7.1.33 (cli) (built: Dec 19 2019 11:01:14) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
MacBook-Pro-2:Formula tyamauchi$ brew reinstall icu4c

結構ハマりました。