Einleitung: Der bekannte Schmerz eines jeden Mac-Entwicklers
\n\nSie haben Node.js über Homebrew aktualisiert, Ihr geliebtes PHP-Skript gestartet – und plötzlich sehen Sie diese erschreckende Meldung:
\n\ndyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib\n Referenced from: /usr/local/bin/php\n Reason: image not found\n\nRuhe bewahren, nur Ruhe! Wenn Sie auf diese Seite gelangt sind, sind Sie weder der erste noch der letzte Entwickler, der auf diesen Fehler gestoßen ist. Auf Stack Overflow hat diese Frage tausende Aufrufe, und das zu Recht: Das Problem entsteht durch einen Versionskonflikt der Bibliothek ICU4C (International Components for Unicode for C) nach der Installation oder Aktualisierung von Node.js über Homebrew.
\n\nIn diesem Tutorial zeige ich Ihnen drei funktionierende Methoden, um den Fehler zu beheben, erkläre seine Ursache und gebe Ihnen nützliche Empfehlungen, damit Sie diese Meldung nie wieder sehen. Los geht's!
\n\nWarum tritt der Fehler dyld: Library not loaded auf?
\n\nBevor wir mit der Fehlerbehebung beginnen, lassen Sie uns die Ursachen verstehen. Das hilft Ihnen, das Ökosystem von macOS und Homebrew besser zu verstehen.
\n\nWas ist ICU4C und was hat PHP damit zu tun?
\n\nICU4C ist eine Bibliothek zur Unterstützung von Unicode, Internationalisierung und Lokalisierung. PHP verwendet sie für Funktionen wie mb_convert_encoding(), die intl-Erweiterung und andere. Homebrew installiert ICU4C als Abhängigkeit für viele Pakete, einschließlich PHP und Node.js.
Die Ereigniskette, die zum Fehler führt
\n\n- \n
- Sie installieren oder aktualisieren Node.js mit
brew install nodeoderbrew upgrade node. \n - Node.js benötigt eine bestimmte Version von ICU4C (z. B. 62.x). \n
- Homebrew aktualisiert ICU4C auf eine neue Version (z. B. 63.x oder 64.x). \n
- Die alte Bibliothek
libicui18n.62.dylibwird entfernt. \n - PHP, das mit Version 62 kompiliert wurde, findet die benötigte Bibliothek nicht – und stürzt mit einem Fehler ab. \n
Einfach gesagt: PHP ist "in der Vergangenheit" geblieben, während die Bibliotheken bereits "in der Zukunft" sind.
\n\nMethode 1: Schnelle Lösung – Neuverlinkung von ICU4C (empfohlen für Anfänger)
\n\nDies ist die einfachste und schnellste Methode, die in 90% der Fälle das Problem löst.
\n\nSchritt 1: Überprüfen Sie die aktuelle Version von ICU4C
\n\nÖffnen Sie das Terminal und führen Sie aus:
\n\nbrew list --versions icu4c\n\nSie sehen etwas wie icu4c 63.1 oder 64.2. Merken Sie sich die Version – sie wird nützlich sein.
Schritt 2: Verlinken Sie ICU4C mit PHP neu
\n\nFühren Sie den Befehl zur Neuverlinkung aus:
\n\nbrew link --force icu4c\n\nWenn Sie eine Warnung sehen, dass die Versionen nicht übereinstimmen – keine Panik. Das ist normal. Starten Sie dann PHP neu:
\n\nwhich php\nphp -v\n\nWenn der Fehler verschwunden ist – super! Wenn nicht, fahren Sie mit der nächsten Methode fort.
\n\nSchritt 3: Alternative – erzwungene Neuverlinkung
\n\nWenn der obige Befehl nicht funktioniert hat, versuchen Sie:
\n\nbrew reinstall icu4c\nbrew link --overwrite icu4c\n\nDies installiert die Bibliothek neu und aktualisiert alle Verweise.
\n\nMethode 2: Neuinstallation von PHP über Homebrew (für diejenigen, die Sauberkeit lieben)
\n\nWenn die Neuverlinkung nicht geholfen hat – dann ist Ihr PHP "fest verdrahtet" mit der alten ICU4C-Version. Die beste Lösung ist eine Neuinstallation von PHP.
\n\nSchritt 1: Entfernen Sie die aktuelle PHP-Version
\n\nbrew uninstall php\n\nWenn Sie mehrere PHP-Versionen haben (z. B. 7.4 und 8.0), entfernen Sie alle:
\n\nbrew uninstall php@7.4 php@8.0\n\nSchritt 2: Bereinigen Sie den Homebrew-Cache
\n\nbrew cleanup\n\nSchritt 3: Installieren Sie PHP neu
\n\nbrew install php\n\nOder, wenn Sie eine bestimmte Version benötigen:
\n\nbrew install php@8.1\n\nSchritt 4: Überprüfen Sie die Funktionsfähigkeit
\n\nSchreiben Sie ein einfaches PHP-Skript zum Testen:<