Ich installierte Knoten mit Homebrew (Mojave), danach funktionierte PHP nicht mehr und wenn ich versuche, PHP -v auszuführen, erhalte 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, beide Knoten und icu4c zu deinstallieren, aber das Problem bleibt bestehen
Es stellte sich heraus, dass ich wie @Grey Black tatsächlich v62.1 von icu4c installieren musste. Sonst hat nichts funktioniert.
brew switch icu4c 62.1
Funktioniert jedoch nur, wenn Sie 62.1 in der Vergangenheit installiert haben. Wenn Sie nicht haben, ist mehr Beinarbeit erforderlich. Homebrew macht macht die Installation nicht einfach frühere Versionen von Formeln.
So habe ich es gemacht:
git -C $(brew --repo homebrew/core) fetch --unshallow
brew log icu4c
, Um 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 noch zu ...git reset && git checkout .
Bereinige dein geändertes Rezept.Ein paar zusätzliche Anmerkungen wurden hinzugefügt, danke an @Noah für den Fang
In meinem Fall geschah dies, weil icu4c auf Version 63 aktualisiert wurde, aber mein lokal installiertes Postgres-Image noch auf icu4c 62.1 verwies. Daher musste ich die verwendete icu4c-Version ändern:
brew switch icu4c 62.1
Ich bin eigentlich ziemlich überrascht, dass diese Lösung noch nicht vorgestellt wurde und ich denke, dass es die einfachste Lösung ist.
Gehen Sie zu GitHub, suchen Sie die Version der Brew-Datei, die der Version von icu4c
entspricht, die Sie benötigen, und rufen Sie die unformatierte Version der Datei ab (folgen Sie den obigen Links und klicken Sie auf View File
und dann auf Raw
). .
Dann muss Brew einfach von dieser URL neu installieren.
Beispiel: Version 62.1
:
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
Ich hatte das gleiche Problem, nachdem ich meine macOS
auf Version 10.13.6
aktualisiert hatte. Ich kann keine composer
- und php
-Befehle ausführen. Nachdem Sie eine Weile recherchiert und verschiedene online ausprobierte Lösungen ausprobiert hatten, funktionierte die Neuinstallation von PHP mit homebrew
.
brew reinstall php
Das hat es für mich behoben:
brew upgrade node
Führen Sie npm version
aus und prüfen Sie, ob derselbe Fehler angezeigt wird.
Wenn ja, aktualisieren Sie Ihre Knotenversion 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
Nur brew remove php
und brew install php
funktionierten nicht und brew reinstall php
____.
brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup
Nun gibt mir php -v
:
PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )
Ich hatte gerade das gleiche Problem und ein Upgrade von Homebrew und das Aufräumen funktionierte für mich. Dieser Fehler ist wahrscheinlich auf einen Fehler in den Paketversionen zurückzuführen. Keine der oben genannten Lösungen hat meinen Fehler behoben.
brew upgrade
und dann
brew cleanup
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 hat mir bei der Installation von 63 geholfen.
Lelands Antwort funktionierte für mich, aber ich musste die Schritte 4 und 6 folgendermaßen ändern:
4) git checkout -B icu4c-62.1 575eb4b
6) brauen neu installieren Formula/icu4c.rb
Habe diesen Fehler auch nach der Installation von PHP 7.3. 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 die aktuelle icu4c kompiliert.
In meinem Fall stieg PHP 7 von 0,31 auf 0,33, und das Problem wurde behoben.
Es scheint unmöglich zu sein, icu4c
mit brew
nach dem letzten OS X-Update zu verknüpfen. Das macht die Sache interessanter. Die einzige Lösung, die ich für mich gefunden habe:
icu4c
herunterladen und kompilieren 62.1 to /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
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
DYLD_LIBRARY_PATH
in ~/.bash_profile
:export DYLD_LIBRARY_PATH=/usr/local/include
Hoffe, es wird ein paar Stunden Ihrer Zeit sparen.
Anstatt eine alte Version von icu4c
zu installieren, mit der der ältere (vorkompilierte) PHP-Link eine Verbindung herstellen kann, ist es besser, den alten PHP-Code neu zu kompilieren, um eine Verknüpfung mit der neueren Bibliothek herzustellen.
brew uninstall [email protected]
brew install --build-from-source [email protected]
Dadurch wird PHP erstellt und mit der neueren Bibliothek verknüpft. Ich fand, dass reinstall
nicht ganz funktioniert hat; Die neue Installation wurde erstickt, wenn der Zielordner bereits vorhanden war.
Ich habe auch brew link --force [email protected]
für meine Umgebung gemacht.
Zum Downgrade musste ich aus dem Quellcode 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