Ich habe Node mit Homebrew (Mojave) installiert, danach hat PHP aufgehört zu arbeiten und wenn ich versuche zu laufen, php -v
bekomme 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
Antworten:
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.
und dann
quelle
brew upgrade
aktualisiert werden, stattdessen wahrscheinlich nur oder ein bestimmtes Paket, nicht alle.brew upgrade npm
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:
Wo
version
ist die installierte Version, die von zurückgegeben wird?info
quelle
brew list icu4c
zeigte eine Dateien von/usr/local/Cellar/icu4c/63.1
.brew switch icu4c 63.1
habe es für mich behoben.brew switch icu4c 63.1
aber 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 ...brew reinstall postgres
icu4c 61.1
.63.1
- nicht lösen.62.1
- nicht gefunden.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
icu4c
Ihnen benötigten Version übereinstimmt, und rufen Sie die Rohversion der Datei ab (folgen Sie den obigen Links und klicken SieView File
dannRaw
).Dann lassen Sie Brew einfach von dieser URL neu installieren.
Zum Beispiel Version
62.1
:Zum Beispiel Version
64.2
:quelle
brew switch icu4c 62.1
sie in erster Linie nicht für Sie funktioniert.dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
dieser Befehl behoben:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
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.1
nur, 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:
git -C $(brew --repo homebrew/core) fetch --unshallow
brew log icu4c
ein Commit aufzuspüren, das auf 62.1 verweist;575eb4b
macht den Trick.cd $(brew --repo homebrew/core)
git checkout 575eb4b -- Formula/icu4c.rb
brew uninstall --ignore-dependencies icu4c
brew install icu4c
Sie sollten jetzt die richtige Version der Abhängigkeit haben! Nun nur um ...git reset && git checkout .
Bereinigen Sie Ihr geändertes Rezept.quelle
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?git -C (brew --repo homebrew/core) fetch --unshallow
sicherstellen, dass Sie eine vollständige Brew-Git-Historie haben.icu4c
. Weder das Aktualisieren, Aktualisieren von Brew funktionierte noch das Neuinstallieren, erneute Verknüpfen oder Erstellen von PHP aus dem Quellcode.git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rb
und dannbrew switch 63.1
Ich hatte das gleiche Problem, nachdem ich meine
macOS
Version aktualisiert hatte10.13.6
. Ich kann nicht laufencomposer
undphp
Befehle. Nachdem Sie eine Weile recherchiert und verschiedene online veröffentlichte Lösungen ausprobiert haben, hat die Neuinstallation von PHP mithomebrew
funktioniert.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 -v
und rufen Sie die richtigen Formeln (die Sie hier finden: https://formulae.brew.sh/formula/php ) ab, um sie@7.1
im obigen Befehl zu ersetzen .quelle
node
Upgrade auf macOS bekommen10.14.2
,brew reinstall node
war auch das Ticket für michbrew upgrade
es für mich behoben.brew reinstall php
Möglicherweise wird eine andere Version als die aktuelle installiert. Möglicherweise müssen Sie die Version mit[email protected]
php -v
wenn Ihr PHP defekt ist: pecho $PATH
Sie esphp
aus (falls vorhanden , sollten Sie Folgendes sehen :)/usr/local/opt/[email protected]/bin
Dies ist eine Möglichkeit, um herauszufinden, welche Versionen derzeit verwendet werden.Führen Sie aus
npm version
und prüfen Sie, ob derselbe Fehler angezeigt wird.Wenn ja, aktualisieren Sie Ihre npm-Version
brew upgrade npm
.Credits
quelle
Das hat es für mich behoben:
quelle
Gerecht
brew remove php
undbrew install php
hat nicht funktioniert, noch hatbrew reinstall php
. Meine Lösung war zu tun:Jetzt
php -v
gibt mir:quelle
Es scheint unmöglich zu sein
icu4c
,brew
nach 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:icu4c
62.1 herunter und kompilieren Sie es/usr/local/icu4c/62.1
DYLD_LIBRARY_PATH
in~/.bash_profile
:quelle
Unter MacOS Mojave konnte ich es nur mit beheben
brew upgrade
quelle
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.
quelle
Für mich wurde dies
brew reinstall nodejs
behoben - mein Problem war das Ausführen von Elixir / Phoenix, also nicht PHP-spezifisch, ich denke, es wurde durch verursachtbrew install postgres
, aber eine Neuinstallation hat nicht geholfen. Ich habe es vonnpm
Befehlen bekommen.quelle
brew update && brew upgrade
arbeitete für michquelle
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.Dadurch wird PHP erstellt und mit der neueren Bibliothek verknüpft. Ich fand
reinstall
nicht 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 .quelle
brew switch icu4c 62.1
Befehl funktionierte jedoch für mich.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
quelle
Um ein Downgrade durchzuführen, musste ich aus der Quelle neu kompilieren (MacOS Mojave)
quelle
Ich bin diesem Artikel hier gefolgt und dies scheint das fehlende Puzzleteil für mich zu sein:
quelle
Unter OSX 10.15.4 wurde
xcode-select --install
das Problem für mich behoben.quelle
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.
quelle
In meinem Fall installiere ich alle mit Homebrew installierten Pakete neu
Danach beginne ich mit der Installation meiner benötigten Version
quelle
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.
quelle
Die Lösung in diesem Kern hat es für mich getan
quelle