dyld: Bibliothek nicht geladen: /usr/local/opt/icu4c/lib/libicui18n.62.dylib Fehler beim Ausführen von PHP nach der Installation des Knotens mit Brew auf dem Mac

277

Ich habe Node mit Homebrew (Mojave) installiert, danach hat PHP aufgehört zu arbeiten und wenn ich versuche zu laufen, php -vbekomme ich diesen Fehler:

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

Ich habe versucht, sowohl Node als auch icu4c zu deinstallieren, aber das Problem besteht weiterhin

Petekaner
quelle
Hast du auch PHP von Homebrew installiert? Haben Sie versucht, PHP neu zu installieren?
Ortomala Lokni
1
Für die Nachwelt: Garn / Knoten deinstallieren / neu installieren scheint den Trick zu tun.
Nathaniel Ford
12
Nach meinem Verständnis geschieht dies, wenn Sie Versionsabhängigkeiten nicht übereinstimmen. In meinem Fall hat der Befehl "Brew Upgrade" meine Probleme behoben. Bitte korrigieren Sie mich, wenn ich in irgendeiner Weise falsch liege.
Sh6210

Antworten:

384

Hinweis - Dadurch wird Ihre PHP-Version aktualisiert.

Ich hatte gerade das gleiche Problem. Das Aufrüsten von Homebrew und das anschließende Aufräumen haben bei mir funktioniert. Dieser Fehler trat wahrscheinlich bei mir auf, weil die Paketversionen nicht übereinstimmten. Keine der oben genannten Lösungen hat meinen Fehler behoben, aber die folgenden Homebrew-Befehle wurden ausgeführt.

brew upgrade

Achtung - Dadurch werden alle Ihre Brühpakete aktualisiert. Wenn Sie nur bestimmte Pakete aktualisieren möchten, stellen Sie sicher, dass Sie spezifisch sind.

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

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

und dann

brew cleanup
Vim Diesel
quelle
40
Das war ... einfach
Alan
7
Ich denke, dies ist keine gute Idee für diejenigen, die eine Umgebung mit zwei Versionen von PHP wie ich haben. Außerdem aktualisiert Brew Upgrade Ihre PHP-Version und dies ist nicht unbedingt gut, wenn Sie nicht Ihr PHP aktualisieren, sondern einen Bibliotheksfehler beheben möchten.
mpoletto
1
Dies ist die beste Lösung, die ich bisher versucht habe, die ausgewählte Antwort hat nicht funktioniert
Alleo Indong
5
Ich würde dies nicht tun, da alle Ihre veralteten Pakete brew upgradeaktualisiert werden, stattdessen wahrscheinlich nur oder ein bestimmtes Paket, nicht alle. brew upgrade npm
xgMz
2
@xgMz Da hast du recht. Für mich war es egal, ob ich alle meine Pakete aktualisierte, aber für jemanden, der nicht will, ist das wahrscheinlich nicht großartig. Ich habe meiner Lösung eine Notiz hinzugefügt. Vielen Dank!
Vim Diesel
276

In meinem Fall geschah dies, weil icu4c auf Version 63 aktualisiert wurde, mein lokal installiertes Postgres-Image jedoch weiterhin auf icu4c 62.1 verwies. Deshalb musste ich die verwendete icu4c-Version ändern:

 brew info icu4c
 brew switch icu4c <version>

Wo versionist die installierte Version, die von zurückgegeben wird?info

Grau schwarz
quelle
1
Genau das ist mir auch passiert, und du hast mich auf den richtigen Weg gebracht. Die größte Einschränkung bei diesem Ansatz besteht darin, dass Sie diese Version zuvor installiert haben müssen. Ich habe dies in meiner Antwort
umgangen
19
Ich hatte 62.1 nicht installiert. brew list icu4czeigte eine Dateien von /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1habe es für mich behoben.
Steven Ensslen
3
Ich habe diese Seite gefunden, nachdem ich diesen Fehler in meinen Postgres-Protokollen gefunden habe. Ich habe auch versucht, brew switch icu4c 63.1aber immer noch den gleichen Fehler in den Protokollen zu bekommen, auch nach dem Neustart von postgres. Ich bin mir nicht sicher, was ich als nächstes tun soll ...
Andrew
27
brew reinstall postgres
Andrew
1
Hilft beim Umschalten auf icu4c 61.1. 63.1- nicht lösen. 62.1- nicht gefunden.
Pavel Petrovich
81

Ich bin eigentlich ziemlich überrascht, dass diese Lösung noch nicht vorgestellt wurde, und ich denke, es ist die einfachste Lösung.

Gehen Sie zu GitHub, suchen Sie die Version der Braudatei, die mit der von icu4cIhnen benötigten Version übereinstimmt, und rufen Sie die Rohversion der Datei ab (folgen Sie den obigen Links und klicken Sie View Filedann Raw).

Dann lassen Sie Brew einfach von dieser URL neu installieren.

Zum Beispiel Version 62.1:

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

Zum Beispiel Version 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
Kevin Elliott
quelle
2
Du bist ein Lebensretter!
Brad Kent
1
Dies ist tatsächlich die beste Lösung, wenn brew switch icu4c 62.1sie in erster Linie nicht für Sie funktioniert.
Säbelprashant
1
Dies ist das einzige, was für mich funktioniert hat, nachdem ich stundenlang versucht habe, npm zu reparieren. Vielen Dank!
Galfisher
17
Hat super funktioniert! Um den Fehler zu beheben, wurde dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibdieser Befehl behoben:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary
2
Für icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W
70

Es stellte sich heraus, dass ich wie @Grey Black tatsächlich v62.1 von icu4c installieren musste. Sonst hat nichts funktioniert.

Funktioniert jedoch brew switch icu4c 62.1nur, wenn Sie in der Vergangenheit 62.1 installiert haben. Wenn Sie nicht haben, ist mehr Beinarbeit erforderlich. Homebrew macht es nicht einfach, frühere Versionen von Formeln zu installieren .

So habe ich es gemacht:

  1. Wir brauchen zuerst einen tiefen Klon des Homebrew-Repos. Das kann eine Weile dauern:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4cein Commit aufzuspüren, das auf 62.1 verweist; 575eb4bmacht den Trick.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cSie sollten jetzt die richtige Version der Abhängigkeit haben! Nun nur um ...
  7. git reset && git checkout . Bereinigen Sie Ihr geändertes Rezept.
Leland
quelle
Wenn ich das tue brew log icu4c, gibt es nur 3-4 Ergebnisse. Keine Erwähnung 62.1. Der oben verwendete Hash funktioniert auch nicht. Haben sie 62 entfernt?
Noah
2
Sie sollten zuerst git -C (brew --repo homebrew/core) fetch --unshallowsicherstellen, dass Sie eine vollständige Brew-Git-Historie haben.
Noah
44
So viel Drama für ein Garn-Upgrade.
Eric Walker
4
Dies ist die einzige Lösung, die für mich funktioniert hat, danke! In meinem Fall war das Problem das ffmpeg-Paket, von dem ich annehme, dass es eine neuere Version von installiert hat icu4c. Weder das Aktualisieren, Aktualisieren von Brew funktionierte noch das Neuinstallieren, erneute Verknüpfen oder Erstellen von PHP aus dem Quellcode.
Gedijedi
5
In meinem Fall habe ich icu4c v63 benötigt, daher lautet das zugehörige Commit zum Auschecken bc0c97952453ff6afc146aa3a706e9902aba4300 . Der git Befehl ist git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbund dannbrew switch 63.1
nahuelhds
39

Ich hatte das gleiche Problem, nachdem ich meine macOSVersion aktualisiert hatte 10.13.6. Ich kann nicht laufen composerund phpBefehle. Nachdem Sie eine Weile recherchiert und verschiedene online veröffentlichte Lösungen ausprobiert haben, hat die Neuinstallation von PHP mit homebrewfunktioniert.

brew reinstall [email protected]

Hinzugefügt am 14. März basierend auf Ryans Kommentar

Holen Sie sich die Version, die Sie gerade verwenden, indem Sie sie ausführen, php -vund rufen Sie die richtigen Formeln (die Sie hier finden: https://formulae.brew.sh/formula/php ) ab, um sie @7.1im obigen Befehl zu ersetzen .

Arun Karnati
quelle
8
Ich habe den gleichen Fehler beim nodeUpgrade auf macOS bekommen 10.14.2, brew reinstall nodewar auch das Ticket für mich
gnmerritt
Ich bekam diesen Fehler, nachdem ich ein neues Paket mit Brew installiert hatte. Das hat brew upgradees für mich behoben.
Samurai Jack
1
brew reinstall phpMöglicherweise wird eine andere Version als die aktuelle installiert. Möglicherweise müssen Sie die Version mit[email protected]
Ryan
3
Sie können die aktuelle Version nicht durch Ausführen erhalten, php -vwenn Ihr PHP defekt ist: p
gingerCodeNinja
1
@gingerCodeNinja das stimmt, vielleicht könnte dies helfen: Gehen Sie unter Mac OS zum Terminal und führen echo $PATHSie es phpaus (falls vorhanden , sollten Sie Folgendes sehen :) /usr/local/opt/[email protected]/binDies ist eine Möglichkeit, um herauszufinden, welche Versionen derzeit verwendet werden.
Arun Karnati
32

Führen Sie aus npm versionund prüfen Sie, ob derselbe Fehler angezeigt wird.

Wenn ja, aktualisieren Sie Ihre npm-Version 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

Credits

Lucas Bustamante
quelle
15

Das hat es für mich behoben:

brew upgrade node
Serdarsenay
quelle
1
Das hat auch bei mir funktioniert. Ich habe es nie vollständig untersucht, aber ich glaube, dass Brew auch die Abhängigkeiten beim Upgrade des Knotens behoben hat. Dies fühlte sich im Vergleich zum Brauen-Upgrade viel zurückhaltender an.
Hendrikbeck
1
scheint ein ähnlicher Fall zu sein,> 'Brew Reinstall Node' hat mir geholfen, nachdem ich zu Catalina
Greencrest
9

Gerecht brew remove phpund brew install phphat nicht funktioniert, noch hat brew reinstall php. Meine Lösung war zu tun:

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

Jetzt php -vgibt mir:

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

Es scheint unmöglich zu sein icu4c, brewnach dem letzten OS X-Update eine Verknüpfung herzustellen. Das macht die Dinge interessanter. Die einzige Lösung, die ich für mich gefunden habe:

  1. Laden Sie icu4c62.1 herunter und kompilieren Sie es/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. Linkbibliotheken:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Set DYLD_LIBRARY_PATHin ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include
Serhey Dolgushev
quelle
1
Ich verwende PHP 7.1 und dies war das einzige, was für mich funktioniert hat.
WebTigers
In meinem Fall brauchte ich die Version
64.2
3

Unter MacOS Mojave konnte ich es nur mit beheben brew upgrade

Léo Maldonado
quelle
2

Ich hatte Probleme, weil meine Version von PHP (7.3) icu4c 63 erwartete und Brew nur 64 installieren würde.

https://stackoverflow.com/a/55828190/2000947 half mir bei der Installation von 63.

Matt Rink
quelle
1
Nach einer Weile der Suche hat mir das geholfen. Danke
jarchuleta
2

Für mich wurde dies brew reinstall nodejsbehoben - mein Problem war das Ausführen von Elixir / Phoenix, also nicht PHP-spezifisch, ich denke, es wurde durch verursacht brew install postgres, aber eine Neuinstallation hat nicht geholfen. Ich habe es von npmBefehlen bekommen.

Callum M.
quelle
2

brew update && brew upgrade arbeitete für mich

Sanjok Dangol
quelle
Willkommen bei SO! Ihre Zusammenarbeit ist willkommen. In diesem Fall gibt es 15 weitere Fragen, daher ist es ein guter Punkt, Ihre Profis zu zeigen.
David García Bodego
1

Anstatt eine alte Version zu installieren icu4c, auf die die ältere (vorkompilierte) PHP verlinken kann, ist es besser, die alte PHP neu zu kompilieren, um eine Verknüpfung mit der neueren Bibliothek herzustellen.

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

Dadurch wird PHP erstellt und mit der neueren Bibliothek verknüpft. Ich fand reinstallnicht ganz funktioniert; Die neue Installation wurde erstickt, als der Zielordner bereits vorhanden war.

Ich habe auch brew link --force [email protected]für meine Umwelt getan .

Jerry
quelle
Versuchte dies, aber keine Verbesserung; Gray Blacks brew switch icu4c 62.1Befehl funktionierte jedoch für mich.
Jamie Birch
1

Lelands Antwort funktionierte für mich, aber ich musste die Schritte 4 und 6 ändern in:

4) git checkout -B icu4c-62.1 575eb4b

6) Brew Formall / icu4c.rb neu installieren

sgrwg
quelle
1

Um ein Downgrade durchzuführen, musste ich aus der Quelle neu kompilieren (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
Smokie
quelle
1

Ich bin diesem Artikel hier gefolgt und dies scheint das fehlende Puzzleteil für mich zu sein:

brew uninstall node@8

gmansour
quelle
1

Unter OSX 10.15.4 wurde xcode-select --installdas Problem für mich behoben.

Winter Faulk
quelle
0

Habe diesen Fehler auch nach der Installation von PHP 7.3 bekommen. Ich hatte es gelöst, nur die Versionen meiner alten PHP zu aktualisieren (5.6 und 7.0, nicht von den offiziellen Repos).

Die Betreuer hatten neue PHP-Versionen gegen das aktuelle icu4c kompiliert.

In meinem Fall stieg PHP 7 von 0,31 auf 0,33 und das Problem wurde gelöst.

David Fernández Rafael
quelle
Wird dies nicht durch die anderen Antworten abgedeckt?
JJ für Transparenz und Monica
IMO, nein. Eine Antwort spricht über das Neukompilieren, und ich muss "aktualisieren".
David Fernández Rafael
Ich habe diesen Fehler auch nach dem Upgrade von einem inoffiziellen Repo erhalten, aber der Brew-Upgrade-Knoten hat ihn behoben.
user3685048
0

In meinem Fall installiere ich alle mit Homebrew installierten Pakete neu

$ brew list | xargs brew reinstall

Danach beginne ich mit der Installation meiner benötigten Version

Anis Slama
quelle
0

Das hat endlich bei mir funktioniert.

brew reinstall postgres

Nachdem Sie den obigen Befehl ausgeführt haben, müssen Sie möglicherweise ausführen

brew postgresql-upgrade-database

um auf Ihre vorherigen Daten zuzugreifen.

Muzammil Baloch
quelle
0

Die Lösung in diesem Kern hat es für mich getan

brew uninstall --ignore-dependencies node icu4c
brew install node
Mokagio
quelle