エラー内容
php -v
dyld[28438]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicuio.70.dylib
Referenced from: <A6D155AA-AC11-32AD-ADDE-5CD17CC3D936> /opt/homebrew/Cellar/php@8.0/8.0.19/bin/php
Reason: tried: '/opt/homebrew/opt/icu4c/lib/libicuio.70.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/icu4c/lib/libicuio.70.dylib' (no such file), '/opt/homebrew/opt/icu4c/lib/libicuio.70.dylib' (no such file), '/usr/local/lib/libicuio.70.dylib' (no such file), '/usr/lib/libicuio.70.dylib' (no such file, not in dyld cache), '/opt/homebrew/Cellar/icu4c@76/76.1_1/lib/libicuio.70.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/icu4c@76/76.1_1/lib/libicuio.70.dylib' (no such file), '/opt/homebrew/Cellar/icu4c@76/76.1_1/lib/libicuio.70.dylib' (no such file), '/usr/local/lib/libicuio.70.dylib' (no such file), '/usr/lib/libicuio.70.dylib' (no such file, not in dyld cache)
zsh: abort php --version
なにやらlibicuio.70.dylibがないといいわれております
ls -la /opt/homebrew/opt/icu4c/lib
で確認したところ76はあるが70はなく、76だと現在使用中のphp8.0と互換性がないらしいです
原因
homebrewをアップデートしたため
参考
ぐぐったらでてきたので下記を参考にさせていただきました
対応
icu4c70のインストール
$ brew tap-new hoge/taps # "hoge"はなんでも可。
$ brew extract icu4c hoge/taps --version 70
$ brew install hoge/taps/icu4c@70
確認
$ ls -la /opt/homebrew/opt/icu4c*
lrwxr-xr-x 1 hoge admin 23 1 11 23:14 /opt/homebrew/opt/icu4c@70 -> ../Cellar/icu4c@70/70.1
シンボリックリンクを貼る
$ cd /opt/homebrew/opt/icu4c/lib
$ ln -s ../../../icu4c@70/70.1/lib/libicudata.70.dylib libicudata.70.dylib
$ ln -s ../../../icu4c@70/70.1/lib/libicui18n.70.dylib libicui18n.70.dylib
$ ln -s ../../../icu4c@70/70.1/lib/libicuio.70.dylib libicuio.70.dylib
$ ln -s ../../../icu4c@70/70.1/lib/libicutest.70.dylib libicutest.70.dylib
$ ln -s ../../../icu4c@70/70.1/lib/libicutu.70.dylib libicutu.70.dylib
$ ln -s ../../../icu4c@70/70.1/lib/libicuuc.70.dylib libicuuc.70.dylib
これで動作するはずが...
$ php -v
dyld[95646]: Library not loaded: /opt/homebrew/opt/libsodium/lib/libsodium.23.dylib
Referenced from: <A6D155AA-AC11-32AD-ADDE-5CD17CC3D936> /opt/homebrew/Cellar/php@8.0/8.0.19/bin/php
Reason: tried: '/opt/homebrew/opt/libsodium/lib/libsodium.23.dylib' (errno=62), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/libsodium/lib/libsodium.23.dylib' (no such file), '/opt/homebrew/opt/libsodium/lib/libsodium.23.dylib' (errno=62), '/usr/local/lib/libsodium.23.dylib' (no such file), '/usr/lib/libsodium.23.dylib' (no such file, not in dyld cache), '/opt/homebrew/Cellar/libsodium/1.0.20/lib/libsodium.23.dylib' (errno=62), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/libsodium/1.0.20/lib/libsodium.23.dylib' (no such file), '/opt/homebrew/Cellar/libsodium/1.0.20/lib/libsodium.23.dylib' (errno=62), '/usr/local/lib/libsodium.23.dylib' (no such file), '/usr/lib/libsodium.23.dylib' (no such file, not in dyld cache)
zsh: abort php -v
今度はdyld[95646]: Library not loaded: /opt/homebrew/opt/libsodium/lib/libsodium.23.dylib
隙を生じぬ二段構え...
確認
$ ls -la /opt/homebrew/opt/libsodium/lib/
今度はlibsodium26はあるけど23がないという状況
libsodium.23.dylib を手動でダウンロードして設置
libsodium.23.dylib を手動で取得して設置します。
ただし、この方法は非推奨であり、動作保証がありません。
libsodium バージョン 1.0.18 (libsodium.23.dylib が含まれるバージョン) をダウンロード
curl -O https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
解凍してビルド
tar -xzf libsodium-1.0.18.tar.gz
cd libsodium-1.0.18
./configure
make
sudo make install
手動でシンボリックリンクを作成
sudo ln -sf /usr/local/lib/libsodium.23.dylib /opt/homebrew/opt/libsodium/lib/libsodium.23.dylib
php -vで問題なく動作することを確認して無事終了
所感
脳死でなにかあったら再インストールという精神が働きかけたけどなんとか解決。
今後もhomebrewのアップデートで同じことが起こりうると考えると、各々のライブラリの最新バージョンに対応したphpを使った方が手っ取り早い気がしないでもない...