dyld: 库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装 node 后运行 php 出错

654

我使用Homebrew (Mojave)安装了Node.js后,PHP停止工作,并且如果我尝试运行php -v ,我会收到以下错误信息:

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

我尝试卸载node和icu4c,但问题仍然存在。


6
为了后人纪念:卸载/重新安装Yarn/Node似乎是解决问题的方法。 - Nathaniel Ford
41
根据我的理解,这种情况发生在您的版本依赖出现不匹配的情况下。在我的情况下,“brew upgrade”命令解决了我的问题。如有任何错误,请指出。 - sh6210
13
我获得这个过程中遇到的问题是 /usr/local/opt/icu4c 目录不存在,并且 brew reinstall icu4c 命令在 icu4c 目录上出现了很多 "permission denied" 错误。所以我使用了 sudo rm -rf /usr/local/Cellar/icu4c 命令删除了目录,然后再次执行 brew reinstall icu4c 命令,一切都正常了。 - Seth Johnson
我遇到了一个奇怪的情况(在一台过时的机器上使用High Sierra),但这是在我更新PHP到7.2之后发生的(或者尝试更新)。我的解决方案是从下载重新安装node。一旦你超出了苹果支持的MacOS范围,Homebrew就不可靠了,我发现。 - David Rhoden
1
只运行 brew upgrade 就帮助了我。 - Maxim Yefremov
显示剩余6条评论
42个回答

3
很多关于恢复缺失版本的 icu4c 的答案。我在使用 postgresql 时遇到了同样的错误,我想这可能会在依赖动态链接该库的各种程序中出现。
对我来说,我正在使用特定版本的 postgresql,即 postgresql@12。我发现最简单的解决方法是重新安装它。
brew reinstall postgresql@12

我想这对于php同样适用。

这个解决方案在我运行 brew reinstall postgresql@14brew doctorbrew cleanup 后起作用了。 - timgavin

3
在MacOS Mojave上,我解决这个问题的唯一方法就是通过 brew upgrade

2
在运行OSX 10.15.4的时候,运行xcode-select --install命令可以解决该问题。

2

我遇到了问题,因为我的PHP版本(7.3)需要icu4c 63,而brew只安装64。

最初的回答 帮助我安装了63。


1
在搜索了一段时间后,这就是帮助我的东西。谢谢。 - jarchuleta

2
与其安装旧版本的 icu4c,以便与旧版(预编译)的 php 进行链接,不如重新编译旧版 php,以链接到更新的库。"最初的回答"
brew uninstall php@7.2
brew install --build-from-source php@7.2

这将构建php并将其链接到更新的库。我发现重新安装并没有完全起作用;当目标文件夹已经存在时,新安装会出现错误。
我还在我的环境中执行了brew link --force php@7.2

尝试了这个方法但是没有改进。然而,Grey Black的 brew switch icu4c 62.1 命令对我有效。 - Jamie Birch

1

[2022自建版]

在我的Mac OS 11.6.8 Big Sur上运行良好。

$ wget https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz
$ # In Finder, copy from Downloads/ to your home directory
$ tar xzvf icu4c-69_1-src.tgz
$ cd icu/source
$ ./configure
$ make
$ make install

之后,nodenpm又可以正常使用了。

参考资料


我正在遇到这个确切的问题。 - Vu Anh

1

this gist中的解决方案对我很有帮助。

brew uninstall --ignore-dependencies node icu4c
brew install node

1

我只是重新安装了 PHP 7.3,这就是出问题的地方,现在已经解决了。不过这篇指南确实给了我正确的方向。 - Nate S

1

Leland的答案对我有用,但我必须更改第4步和第6步:

4) git checkout -B icu4c-62.1 575eb4b

6) brew reinstall Formula/icu4c.rb


0

我通过更新所有的R包来解决int问题:

update.packages(checkBuilt = TRUE, ask = FALSE)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接