Introduction : La douleur familière de tout développeur sur Mac
\n\nVous avez mis à jour Node.js via Homebrew, lancé votre script PHP préféré — et soudain, vous voyez ce message glaçant :
\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\nDu calme, rien que du calme ! Si vous êtes arrivé sur cette page, c'est que vous n'êtes ni le premier ni le dernier développeur à rencontrer cette erreur. Sur Stack Overflow, cette question a recueilli des milliers de vues, et ce n'est pas pour rien : le problème survient à cause d'un conflit de versions de la bibliothèque ICU4C (International Components for Unicode for C) après l'installation ou la mise à jour de Node.js via Homebrew.
\n\nDans ce tutoriel, je vais vous montrer trois méthodes efficaces pour corriger l'erreur, expliquer sa cause profonde et vous donner des recommandations utiles pour que vous ne voyiez plus jamais ce message. C'est parti !
\n\nPourquoi l'erreur dyld : Library not loaded se produit-elle ?
\n\nAvant de vous précipiter pour corriger, comprenons les causes. Cela vous aidera à mieux comprendre l'écosystème macOS et Homebrew.
\n\nQu'est-ce qu'ICU4C et quel est son rapport avec PHP ?
\n\nICU4C est une bibliothèque pour la prise en charge d'Unicode, de l'internationalisation et de la localisation. PHP l'utilise pour des fonctions comme mb_convert_encoding(), l'extension intl et d'autres. Homebrew installe ICU4C comme dépendance pour de nombreux paquets, y compris PHP et Node.js.
La chaîne d'événements menant à l'erreur
\n\n- \n
- Vous installez ou mettez à jour Node.js via
brew install nodeoubrew upgrade node. \n - Node.js nécessite une version spécifique d'ICU4C (par exemple, 62.x). \n
- Homebrew met à jour ICU4C vers une nouvelle version (par exemple, 63.x ou 64.x). \n
- L'ancienne bibliothèque
libicui18n.62.dylibest supprimée. \n - PHP, qui a été compilé avec la version 62, ne trouve pas la bibliothèque nécessaire — et plante avec une erreur. \n
En termes simples : PHP est resté « dans le passé », tandis que les bibliothèques sont déjà « dans le futur ».
\n\nMéthode 1 : Solution rapide — relier ICU4C (recommandé pour les débutants)
\n\nC'est la méthode la plus simple et la plus rapide, qui résout le problème dans 90 % des cas.
\n\nÉtape 1 : Vérifiez la version actuelle d'ICU4C
\n\nOuvrez le Terminal et exécutez :
\n\nbrew list --versions icu4c\n\nVous verrez quelque chose comme icu4c 63.1 ou 64.2. Notez la version — elle vous sera utile.
Étape 2 : Reliez ICU4C avec PHP
\n\nExécutez la commande pour relier :
\n\nbrew link --force icu4c\n\nSi vous voyez un avertissement indiquant que les versions ne correspondent pas — ne paniquez pas. C'est normal. Ensuite, redémarrez PHP :
\n\nwhich php\nphp -v\n\nSi l'erreur a disparu — bravo ! Sinon, passez à la méthode suivante.
\n\nÉtape 3 : Variante alternative — relier de force
\n\nSi la commande ci-dessus n'a pas fonctionné, essayez :
\n\nbrew reinstall icu4c\nbrew link --overwrite icu4c\n\nCela réinstallera la bibliothèque et mettra à jour tous les liens.
\n\nMéthode 2 : Réinstallation de PHP via Homebrew (pour ceux qui aiment la propreté)
\n\nSi le reliage n'a pas aidé — cela signifie que votre PHP est « figé » sur une ancienne version d'ICU4C. La meilleure solution est de réinstaller PHP.
\n\nÉtape 1 : Supprimez la version actuelle de PHP
\n\nbrew uninstall php\n\nSi vous avez plusieurs versions de PHP (par exemple, 7.4 et 8.0), supprimez-les toutes :
\n\nbrew uninstall php@7.4 php@8.0\n\nÉtape 2 : Nettoyez le cache de Homebrew
\n\nbrew cleanup\n\nÉtape 3 : Réinstallez PHP
\n\nbrew install php\n\nOu, si vous avez besoin d'une version spécifique :
\n\nbrew install php@8.1\n\nÉtape 4 : Vérifiez le fonctionnement
\n\nÉcrivez un script PHP simple pour vérifier :<