在Mac上通过Brew安装Node后如何修复libicui18n.62.dylib的dyld错误

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:每位Mac开发者的常见痛点

\n\n

您通过Homebrew更新了Node.js,然后运行了您最喜欢的PHP脚本——突然看到了这个令人心惊胆战的消息:

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

冷静,保持冷静!如果您来到了这个页面,说明您既不是第一个,也不是最后一个遇到这个错误的开发者。在Stack Overflow上,这个问题已经积累了数千次浏览,这并非偶然:问题源于通过Homebrew安装或更新Node.js后,ICU4C(用于C语言的Unicode国际化组件)库的版本冲突。

\n\n

在本教程中,我将向您展示三种修复此错误的有效方法,解释其根本原因,并给出实用建议,确保您再也不会看到这条消息。我们开始吧!

\n\n

为什么会出现dyld: Library not loaded错误?

\n\n

在着手修复之前,我们先来了解原因。这将帮助您更好地理解macOS和Homebrew的生态系统。

\n\n

什么是ICU4C,它和PHP有什么关系?

\n\n

ICU4C是一个支持Unicode、国际化和本地化的库。PHP使用它来处理诸如mb_convert_encoding()、intl扩展等功能。Homebrew将ICU4C作为许多软件包的依赖项进行安装,包括PHP和Node.js。

\n\n

导致错误的事件链

\n\n
    \n
  1. 您通过brew install node或brew upgrade node安装或更新Node.js。
  2. \n
  3. Node.js需要特定版本的ICU4C(例如62.x)。
  4. \n
  5. Homebrew将ICU4C更新到新版本(例如63.x或64.x)。
  6. \n
  7. 旧的库文件libicui18n.62.dylib被删除。
  8. 使用版本62编译的PHP无法找到所需的库——从而崩溃并报错。
\n\n

简单来说:PHP还停留在“过去”,而库已经进入了“未来”。

\n\n

方法1:快速解决方案——重新链接ICU4C(推荐新手使用)

\n\n

这是最简单快捷的方法,在90%的情况下都能解决问题。

\n\n

步骤1:检查当前ICU4C版本

\n\n

打开终端并执行:

\n\n
brew list --versions icu4c
\n\n

您会看到类似icu4c 63.1或64.2的信息。记下这个版本——后面会用到。

\n\n

步骤2:将ICU4C重新链接到PHP

\n\n

执行重新链接命令:

\n\n
brew link --force icu4c
\n\n

如果您看到版本不匹配的警告——不要惊慌。这是正常的。然后重新启动PHP:

\n\n
which php\nphp -v
\n\n

如果错误消失了——您太棒了!如果没有——请转到下一个方法。

\n\n

步骤3:替代方案——强制重新链接

\n\n

如果上述命令无效,请尝试:

\n\n
brew reinstall icu4c\nbrew link --overwrite icu4c
\n\n

这将重新安装库并更新所有链接。

\n\n

方法2:通过Homebrew重新安装PHP(适合喜欢干净环境的人)

\n\n

如果重新链接无效——说明您的PHP是“绑定”在旧版ICU4C上的。最佳解决方案是重新安装PHP。

\n\n

步骤1:卸载当前PHP版本

\n\n
brew uninstall php
\n\n

如果您有多个PHP版本(例如7.4和8.0),请全部卸载:

\n\n
brew uninstall php@7.4 php@8.0
\n\n

步骤2:清理Homebrew缓存

\n\n
brew cleanup
\n\n

步骤3:重新安装PHP

\n\n
brew install php
\n\n

或者,如果您需要特定版本:

\n\n
brew install php@8.1
\n\n

步骤4:检查功能是否正常

\n\n

编写一个简单的PHP脚本来测试:<

博客

书籍推荐