理解するべきポイント
問題
- Node.jsをHomebrewでインストールした後、PHPを実行すると、
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
というエラーが発生する。
原因
- PHPがICU4Cの特定のバージョン(libicui18n.62.dylib)を必要としているが、システムの他の場所にあるバージョンと競合している。
- Node.jsのインストール時に、ICU4Cというライブラリもインストールされた。
日本語での説明
問題
Node.jsをHomebrewを使ってMacにインストールした後、PHPを実行すると、"dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib"というエラーが発生します。これは、Node.jsのインストール時に一緒にインストールされたICU4Cというライブラリが、PHPが使用するバージョンと異なるためです。
原因
ICU4Cは、国際化とローカライゼーションのためのライブラリです。Node.jsのインストール時に、HomebrewがICU4Cの特定のバージョン(libicui18n.62.dylib)をインストールします。しかし、PHPが使用するICU4Cのバージョンが異なる場合、このエラーが発生します。これは、システムの他の場所にあるICU4Cのバージョンと競合しているためです。
解決策
このエラーを解決するには、以下の方法を試してください:
PHPのバージョンを更新する
- PHPのバージョンを更新することで、ICU4Cのバージョンが適切なものになる場合があります。
- Homebrewを使ってPHPを更新する方法については、Homebrewのドキュメントを参照してください。
ICU4Cのバージョンを調整する
- Homebrewを使用して、ICU4CのバージョンをPHPが使用するバージョンに合わせることもできます。
- 具体的な手順については、Homebrewのドキュメントを参照してください。
環境変数を調整する
- PHPの環境変数を調整して、ICU4Cの検索パスを変更することができます。
- これは、システム上の他のICU4Cのバージョンとの競合を回避するのに役立ちます。
日本語での説明とコード例
brew upgrade php
brew reinstall icu4c
環境変数を調整する
export DYLD_LIBRARY_PATH="/usr/local/opt/icu4c/lib:$DYLD_LIBRARY_PATH"
注意
- この環境変数の設定は、現在のシェルセッションのみ有効です。永続的な変更が必要な場合は、シェル設定ファイル(
.bash_profile
など)に設定を追加してください。 DYLD_LIBRARY_PATH
環境変数を設定する場合は、適切なパスを指定してください。
日本語での説明と代替方法
brew upgrade php
brew reinstall icu4c
export DYLD_LIBRARY_PATH="/usr/local/opt/icu4c/lib:$DYLD_LIBRARY_PATH"
ICU4Cのリンクを変更する
手動でリンクを作成する
sudo ln -s /usr/local/opt/icu4c/lib/libicui18n.62.dylib /usr/lib/libicui18n.62.dylib
- この方法では、ICU4Cのライブラリを手動でシステムのライブラリディレクトリにリンクします。
Homebrewのリンクを変更する
brew link --overwrite icu4c
- このコマンドは、ICU4Cのリンクを強制的に書き換えるため、他のアプリケーションで問題が発生する可能性があります。慎重に使用してください。
PHPのソースコードからインストールする
- PHPのソースコードをダウンロードして、カスタムビルドを行うことで、ICU4Cのバージョンを制御することができます。
- 特に、手動でリンクを作成する方法やPHPのソースコードからインストールする方法は、システムの安定性に影響を与える可能性があるため、慎重に使用してください。
php node.js macos