如何修复在通过Brew安装Node后Mac上出现的dyld: Library not loaded: libicui18n.62.dylib错误

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

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

开始课程

引言:当PHP与Homebrew不再兼容时

\n\n

您是否曾遇到过这样的情况:一切运行完美,然后——砰!——您心爱的PHP脚本突然报出一个令人毛骨悚然的错误?如果您是macOS开发者,并且最近通过Homebrew安装了Node.js,那么您很可能见过这条可怕的消息:

\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

不要惊慌!这不是世界末日,仅仅是ICU4C(C语言Unicode国际化组件)库的版本冲突。这种情况非常普遍,以至于在Stack Overflow上这个问题已经积累了数千次浏览。今天,我们将弄清楚为什么会发生这种情况,更重要的是,如何一劳永逸地解决它。

\n\n

为什么会出现libicui18n.62.dylib错误?

\n\n

让我们来分析一下其中的机制。ICU4C是一个用于支持Unicode的库,PHP使用它来处理国际化功能(例如intl、mbstring等函数)。当您通过Homebrew安装PHP时,它会绑定到安装时特定的ICU4C版本。

\n\n

当您通过Brew安装(或更新)Node.js时,问题就出现了。Node.js也依赖于ICU4C,而Brew可能会将此库更新到新版本,并删除旧版本。结果,PHP仍然保留着对不再存在的文件libicui18n.62.dylib的“死链接”。因此出现错误:

\n\n
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
\n\n

本质上,这是一个经典的依赖冲突。但好消息是:有解决方案,而且相当简单。

\n\n

解决方法:从简单到可靠

\n\n

方法1:重新链接ICU4C(快速修复)

\n\n

最快的方法是“提醒”PHP库现在的位置。Homebrew将当前版本的ICU4C存储在其他位置,但我们可以创建一个符号链接。

\n\n
    \n
  1. 首先,查看当前安装的ICU4C版本:
  2. \n
\n\n
brew list --versions icu4c
\n\n

您会看到类似icu4c 72.1的内容(版本号可能不同)。

\n\n
    \n
  1. 现在,让我们创建PHP正在寻找的目录,并创建符号链接:
  2. \n
\n\n
sudo mkdir -p /usr/local/opt/icu4c/lib\nsudo ln -s /usr/local/Cellar/icu4c/72.1/lib/libicui18n.dylib /usr/local/opt/icu4c/lib/libicui18n.62.dylib
\n\n

重要: 将72.1替换为您自己的ICU4C版本。如果版本是73.0,命令将如下所示:

\n\n
sudo ln -s /usr/local/Cellar/icu4c/73.0/lib/libicui18n.dylib /usr/local/opt/icu4c/lib/libicui18n.62.dylib
\n\n

检查PHP是否正常工作:

\n\n
php -v
\n\n

如果您看到PHP版本且没有错误——太好了,您成功了!但这是一个临时解决方案。下次更新ICU4C时,链接会再次失效。

\n\n

方法2:通过Brew重新安装PHP(推荐)

\n\n

更正确的方法是强制PHP使用当前版本的ICU4C重新编译。这需要稍微多一点时间,但能从根本上解决问题。

\n\n
    \n
  1. 首先,卸载当前版本的PHP(如果存在):
  2. \n
\n\n
brew uninstall php
\n\n
    \n
  1. 然后,重新安装PHP,明确指定使用当前版本的ICU4C:
  2. \n
\n\n
brew install php
\n\n

Homebrew会自动拉取最新版本的ICU4C,并使用正确的链接重新编译PHP。安装后,请检查:

\n\n
php -v\nphp -m | grep intl
\n\n

intl模块应该出现在列表中。如果没有——可能需要在php.ini中手动启用它,但通常Brew会自动完成此操作。

\n\n

方法3:安装特定版本的ICU4C

博客

书籍推荐