dyld:ライブラリがロードされていません:Macにbrewでノードをインストールした後にphpを実行すると/usr/local/opt/icu4c/lib/libicui18n.62.dylibエラーが発生します


282

Homebrew(Mojave)を使用してノードをインストールした後、phpが機能しなくなり、実行しようとするphp -vと、次のエラーが発生します。

php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found

ノードとicu4cの両方をアンインストールしようとしましたが、問題は解決しません


Homebrewからphpもインストールしましたか?PHPを再インストールしようとしましたか?
Ortomala Lokni、

1
後世のために:アンインストール/再インストールヤーン/ノードはトリックをするようです。
Nathaniel Ford

12
私の理解によると、これはバージョンの依存関係が一致していない場合に起こります。私の場合、「brew upgrade」コマンドで問題が解決しました。私が何らかの方法で間違っている場合は、私を修正してください。
sh6210

回答:


391

-これにより、PHPバージョンがアップグレードされます。

私はこれと同じ問題を抱えていました。Homebrewをアップグレードしてからクリーンアップするのがうまくいきました。このエラーは、パッケージバージョンの不一致が原因で発生した可能性があります。上記の解決策はどれも私のエラーを解決しませんでしたが、次の自作コマンドを実行すると解決しました。

brew upgrade

注意 -すべてのbrewパッケージがアップグレードされます。特定のパッケージのみをアップグレードする場合は、具体的に指定してください。

brew upgrade // for upgrading all packages -- this is the command I used

brew upgrade {package} // for upgrading a specific package

その後

brew cleanup

40
それは...簡単でした
アラン

7
私のように2つのバージョンのPHPを使用している環境では、これは良い考えではないと思います。また、brewアップグレードはPHPのバージョンをアップグレードするため、PHPをアップグレードするのではなくライブラリエラーを解決することが目的の場合は、これは必ずしも必要ではありません。
mpoletto

1
これは、これまでに試した中で最高のソリューションです。選択した答えは機能しませんでした
Alleo Indong

5
すべてのbrewの古いパッケージbrew upgradeをアップグレードするので、私はこれを行いません。代わりに、おそらくbrew upgrade npmすべてまたは特定のパッケージのみをアップグレードます。
xgMz

2
@xgMzあなたはこれについて正しいです。私にとっては、すべてのパッケージを更新するかどうかは気にしませんでしたが、更新を望まない人にとっては、おそらくそれほど良くありません。ソリューションにメモを追加しました。ありがとう!
Vim Diesel

279

私の場合、icu4cがバージョン63にアップグレードされたが、ローカルにインストールされたpostgresイメージがまだicu4c 62.1を参照していたために発生しました。したがって、使用するicu4cのバージョンを変更する必要がありました。

 brew info icu4c
 brew switch icu4c <version>

versionによって返されたインストール済みバージョンはどこにありますかinfo


1
これはまさに私にも起こったことであり、あなたは私を正しい軌道に乗せました。このアプローチの主な注意点は、以前にこのバージョンをインストールしておく必要があることです。私は私の答えでこれを回避しました
Leland

19
62.1をインストールしていません。 brew list icu4cからのファイルを表示しました/usr/local/Cellar/icu4c/63.1brew switch icu4c 63.1私のために修正しました。
Steven Ensslen

3
Postgresログでこのエラーを見つけた後、このページを見つけました。私も試しましたbrew switch icu4c 63.1が、postgresを再起動した後でも、ログに同じエラーが表示されます。次に何をすべきかわからない...
Andrew

27
私は走り終えてbrew reinstall postgres
Andrew

1
に切り替えるのに役立ちますicu4c 61.163.1-解決しない。62.1- 見つかりません。
Pavel Petrovich

82

このソリューションがまだ提示されていないことに私は実際にかなり驚いており、それが最も簡単なソリューションであると感じています。

GitHubに移動し、icu4c必要なバージョンと一致するbrewfileのバージョンを見つけて、ファイルのrawバージョンを取得します(上記のリンクをたどって、View Fileた後Raw)。

次に、そのURLからBrewを再インストールします。

たとえば、バージョン62.1

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb

たとえば、バージョン64.2

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb

2
あなたは命の恩人です!
Brad Kent

1
これがbrew switch icu4c 62.1最初のインスタンスで機能しない場合は、これが実際に最適なソリューションです。
saberprashant

1
これは、何時間もnpmを修正しようとした後で私にとってうまくいった唯一のものです。ありがとう!
ガルフィッシャー

18
よくできました!エラーを修正するために、dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibこのコマンドはそれを修正しました:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary

2
icu4c 66の場合brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W

70

私は、@ Grey Blackのように、icu4cのv62.1を実際にインストールする必要がありました。他には何もうまくいきませんでした。

ただし、brew switch icu4c 62.1過去に62.1をインストールした場合にのみ機能します。あなたがいない場合は、より多くのレッグワークが関係しています。Homebrewでは、以前のバージョンの数式を簡単にインストールできませ

ここに私がそれをした方法があります:

  1. まず、Homebrewリポジトリのディープクローンが必要です。これは時間がかかる場合があります:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4c62.1を参照するコミットを追跡する。575eb4bトリックを行います。
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cこれで、正しいバージョンの依存関係ができました。今だけに...
  7. git reset && git checkout . 変更したレシピをクリーンアップします。

私がするときbrew log icu4c、3-4の結果しかありません。62.1についての言及はありません。上記で使用したハッシュも機能しません。彼らは62を削除しましたか?
ノア

2
最初にgit -C (brew --repo homebrew/core) fetch --unshallow、完全なgit履歴があることを確認する必要があります。
ノア

44
糸のアップグレードのためのとてもたくさんのドラマ。
Eric Walker

4
これが私のために働いた唯一の解決策です、ありがとう!私の場合、問題は、新しいバージョンのをインストールしたffmpegパッケージでしたicu4c。ソースからのphpの再構築、再リンク、ビルド、更新、brewのいずれも機能しませんでした。
ゲダイジェディ

5
私の場合はicu4c v63が必要なので、チェックアウトへの関連するコミットはbc0c97952453ff6afc146aa3a706e9902aba4300です。gitコマンドはgit checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rb次のbrew switch 63.1
とおりです

39

macOSバージョンにアップグレードした後も同じ問題が発生しました10.13.6composerphpコマンドが実行できません。しばらく調べて、オンラインで投稿されたさまざまなソリューションを試した後、phpを再インストールするとhomebrewうまくいきました。

brew reinstall php@7.1

ライアンのコメントに基づいて3月14日に追加されました

実行して現在使用しているバージョンをphp -v取得し、上記のコマンドで置き換える適切な数式(https://formulae.brew.sh/formula/phpにあります)を取得します@7.1


8
私が実行している同じエラーだnodeとアップグレードMacOSの後に10.14.2brew reinstall nodeあまりにも私のための切符だった
gnmerritt

brewで新しいパッケージをインストールした後、このエラーが発生し始めました。やってbrew upgrade私のためにそれを修正しました。
サムライジャック

1
brew reinstall php現在のバージョンとは異なるバージョンがインストールされる可能性があります。バージョンを指定する必要がある場合がありますphp@7.1
Ryan

3
php -vphpが壊れている場合、実行しても現在のバージョンを取得できません:p
gingerCodeNinja

1
@gingerCodeNinja正しい、おそらくこれは役立つかもしれません:Mac OSの場合、ターミナルに移動して実行しますecho $PATH(ある場合はphp、次のように表示されます:)/usr/local/opt/php@7.2/binこれは、現在使用されているバージョンを確認する方法の1つです。
アルンカルナティ

33

実行npm versionして、同じエラーが表示されるかどうかを確認します。

その場合は、npmバージョンをアップグレードしてくださいbrew upgrade npm

==> Upgrading 1 outdated package, with result:
npm 8.1.2 -> 10.3.0
==> Upgrading npm
==> Installing dependencies for node: icu4c
==> Installing node dependency: icu4c

クレジット


15

これは私のためにそれを修正しました:

brew upgrade node

1
これも私にとってはうまくいきました。私はそれを完全に調査したことはありませんが、brewはノードのアップグレード中に依存関係も修正したと思います。これは、醸造アップグレードに比べてはるかに抑制されていると感じました。
hendrikbeck

1
同様のケースのようです、>「brew再インストールノード」はカタリナに切り替えた後に私を助けました
greencrest

9

ただbrew remove phpbrew install phpうまくいきませんでしたbrew reinstall php。私の解決策は次のことでした:

brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup

php -v私に与えます:

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )

5

リンクできないようです icu4cbrew最新のOS Xアップデート後を使用です。これは物事をより面白くします。私が機能していることがわかった唯一の解決策:

  1. icu4c62.1をダウンロードしてコンパイル/usr/local/icu4c/62.1
mkdir ~/sources
cd ~/sources
wget http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
tar xvzf icu4c-62_1-src.tgz
cd icu/source/

sudo mkdir /usr/local/icu4c/62.1
./configure --prefix=/usr/local/icu4c/62.1
make
sudo make install
  1. リンクライブラリ:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. 設定するDYLD_LIBRARY_PATHには~/.bash_profile
export DYLD_LIBRARY_PATH=/usr/local/include

1
私はPHP 7.1を実行していますが、これが私にとってうまくいった唯一のものでした。
WebTigers

私の場合は64.2バージョンが必要だったので、github.com / unicode
org /



2

私はbrew reinstall nodejsこれを修正しました-私の問題はElixir / Phoenixの実行にあったので、PHP固有brew install postgresではありません。npmコマンドから取得していました。


2

brew update && brew upgrade 私のために働いた


SOへようこそ!あなたのコラボレーションは大歓迎です。この場合、さらに15の質問があるので、あなたの長所を示すのに良いポイントになります。
DavidGarcíaBodego

2

これが最終的に私のために働いたものです。

brew reinstall postgres

上記のコマンドを実行した後、実行する必要があるかもしれません

brew postgresql-upgrade-database

以前のデータにアクセスします。


何よりも試した結果、これだけがうまくいきました。
Kripalu Sar

1

icu4c古い(プリコンパイルされた)phpがリンクできる古いバージョンをインストールするのではなく、古いphpを再コンパイルして、より新しいライブラリにリンクすることをお勧めします。

brew uninstall php@7.2
brew install --build-from-source php@7.2

これにより、phpがビルドされ、新しいライブラリにリンクされます。見つけたreinstallかなりうまくいきませんでした。宛先フォルダがすでに存在する場合、新しいインストールは窒息します。

私もbrew link --force php@7.2自分の環境のためにやった。


これを試しましたが、改善はありませんでした。brew switch icu4c 62.1しかしながら、グレイ・ブラックのコマンドは私にはうまくいきました。
ジェイミーバーチ

1

リーランドの答えはうまくいきましたが、ステップ4と6を次のように変更する必要がありました。

4)git checkout -B icu4c-62.1 575eb4b

6)Formula / icu4c.rbをbrew再インストールします


1

ダウングレードするために、ソースから再コンパイルする必要がありました(MacOS Mojave)

$ wget https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
$ tar xvfz icu4c-62_1-src.tgz
$ cd icu/sources
$ ./configure
$ make
$ make install



0

PHP 7.3をインストールした後も、このエラーが発生しました。古いphpのバージョン(公式リポジトリからではなく、5.6と7.0)のみのアップグレードを解決しました。

メンテナは現在のicu4cに対して新しいphpバージョンをコンパイルしました。

私の場合、PHP 7は0.31から0.33になり、問題は解決しました。


これは他の回答でカバーされていませんか?
JJ for Transparencyおよびモニカ

IMO、いいえ。1つの答えは再コンパイルについてであり、私がしなければならないことは「更新」です。
デビッド・フェルナンデス・ラファエル

非公式リポジトリからアップグレードした後もこのエラーが発生しましたが、brewアップグレードノードで修正されました。
user3685048


-1

私の場合、Homebrewでインストールされたすべてのパッケージを再インストールします

$ brew list | xargs brew reinstall

その後、必要なバージョンのインストールを開始します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.