10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

icu4c がバージョンアップされたせいでphpが動作しなくなったときの解決策

Last updated at Posted at 2020-07-11

背景

php artisan list など php のコマンドが実行できなくなった。
php -v すら動作しない。

$ php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.66.dylib
  Reason: image not found

調査

かるく調べてみたところ、 brew yarn install (あまり自信がないがたぶんこれが原因)により、 icu4c がバージョンアップされてしまい、依存関係が崩れてしまったためのようだ。

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

どうやら、エラーから察するにこれをv66系にダウングレードする必要がありそう。

ちなみに、phpは phpenv でコントロールしていて、 php7.2.24 で稼働しているのだが、 新しめのバージョン(php7.3.11) の場合は依存関係がクリアであるため問題なく動作する。

$ php -v
PHP 7.3.11 (cli) (built: Feb 29 2020 02:50:36) ( NTS )

(今回はphpとの依存関係で発生しているが、他のものとの依存関係は発生すると思うので、どちらかをアップグレード、またはダウングレードして合わせる必要がある。今回はダウングレードを選択した。)

解決策

で、過去のバージョンに切り替えるのだが、過去のバージョンがCellerに残っているとき以下に各バージョンが出てくる。

$ brew info icu4c
icu4c: stable 67.1 (bottled) [keg-only]
C/C++ and Java libraries for Unicode and globalization
http://site.icu-project.org/home
/usr/local/Cellar/icu4c/67.1 (258 files, 71.2MB)
  Poured from bottle on 2020-07-08 at 12:10:46
(ここにずらっとバージョンがならぶ)
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/icu4c.rb

その場合、 brew switch icu4c 66.1 みたいな感じで切り替えが可能だが今回はないので、過去コミットから取得してくる必要がある

// Formula へ移動
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

// コミットを確認ん
$ git log --oneline icu4c.rb
88b9cc7898 icu4c: update 67.1 bottle.
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.

// 戻したいバージョンにアップデート
// これで古いバージョンをインストールする状態になった
$ git checkout 22fb699a41 icu4c.rb
Updated 1 path from f3a60216be

// reinstall
$ brew reinstall icu4c

// バージョンの再確認
$ brew info icu4c
icu4c: stable 66.1 (bottled) [keg-only]

ダウングレードができたので、もう一度 php -v を試してみます。

$ php -v                                                                                                                                                                      (git)-[feature/add_official_account_report]
PHP 7.2.24 (cli) (built: May  3 2020 10:40:39) ( NTS )

無事動きましたとさ

参考文献

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?