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


278

我使用自制软件(Mojave)安装了节点,之后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

我尝试同时卸载节点和icu4c,但问题仍然存在


您还从Homebrew安装了php吗?您是否尝试过重新安装php?
Ortomala Lokni

1
对于后代:卸载/重新安装yarn / node似乎可以解决问题。
纳撒尼尔·福特

12
根据我的理解,当您不匹配版本依赖项时会发生这种情况。就我而言,“酿造升级”命令解决了我的问题。如果我有任何错误,请纠正我。
sh6210

Answers:


385

注意 -这将升级您的PHP版本。

我只是有同样的问题。升级Homebrew然后进行清理对​​我有用。由于软件包版本不匹配,此错误可能对我显示。上面的解决方案都不能解决我的错误,但是运行以下自制程序命令可以解决。

brew upgrade

注意 -这将升级您的所有冲煮包装。如果只想升级特定的软件包,请确保特定。

brew upgrade // for upgrading all packages -- this is the command I used

brew upgrade {package} // for upgrading a specific package

然后

brew cleanup

40
太容易了
艾伦(Alan)

7
我认为对于像我这样具有两个PHP版本的环境的人来说,这不是一个好主意。此外,brew upgrade将升级您的PHP版本,如果您的目标不是升级PHP,而是解决库错误,则这不一定是好方法。
mpoletto

1
这是到目前为止我尝试过的最好的解决方案,选定的答案无效
Alleo Indong

5
我不会这样做,因为brew upgrade将升级您所有酿造的过时软件包,相反,可能只会升级或升级brew upgrade npm特定软件包,而不是全部。
xgMz

2
@xgMz您对此是正确的。对我来说,我不在乎是否要更新所有软件包,但是对于不想这么做的人来说,那可能并不好。我在解决方案中添加了注释。谢谢!
Vim Diesel

278

就我而言,这是因为将icu4c升级到了版本63,但我本地安装的postgres映像仍引用了icu4c 62.1。因此,我不得不更改使用的icu4c版本:

 brew info icu4c
 brew switch icu4c <version>

version所返回的安装版本在哪里?info


1
这也是发生在我身上的事情,您使我走上了正确的轨道。该方法的主要警告是您必须先前已安装此版本。我在回答中解决了这个问题
-Leland

19
我没有安装62.1。 brew list icu4c显示了来自的文件/usr/local/Cellar/icu4c/63.1brew switch icu4c 63.1为我修复它。
史蒂文·恩斯伦

3
我在Postgres日志中发现此错误后找到了此页面。我也尝试过,brew switch icu4c 63.1但是即使重新启动postgres之后,日志中仍然出现相同的错误。不确定下一步该怎么做...
安德鲁

27
我最终跑步了brew reinstall postgres,这似乎解决了我的问题
安德鲁(Andrew)

1
帮助切换到icu4c 61.163.1-不解决。62.1- 未找到。
帕维尔·彼得罗维奇

81

实际上,我很惊讶尚未提出该解决方案,我觉得这是最简单的解决方案。

去GitHub上,找到的版本匹配的brewfile的版本icu4c,你需要和获取文件的原始版本(按照上面的链接,点击View File然后Raw)。

然后只需从该URL重新安装brew。

例如,version 62.1

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb

例如,version 64.2

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb

2
您是救生员!
布莱德·肯特

1
如果实际上一开始brew switch icu4c 62.1对您不起作用,那么这实际上是最好的解决方案。
saberprashant

1
在尝试修复npm数小时后,这是对我唯一有效的方法。谢谢!
galfisher

17
很棒!要修复dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib此命令,请修复以下错误:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary,

2
对于icu4c 66brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W

70

原来,我像@Grey Black一样,必须实际安装icu4c的v62.1。没有其他工作。

但是,brew switch icu4c 62.1仅在以前安装62.1的情况下才有效。如果您还没有的话,那么还会涉及更多的立法工作。Homebrew 使得安装以前版本的公式变得不容易

这是我的做法:

  1. 我们首先需要对Homebrew存储库进行深度克隆。可能还要等一下:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4c跟踪引用62.1的提交;575eb4b绝招。
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4c您现在应该具有正确版本的依赖项!现在只是...
  7. git reset && git checkout . 清理修改后的配方。

当我这样做时brew log icu4c,只有3-4个结果。没有提及62.1。您在上面使用的哈希也不起作用。他们删除了62吗?
诺亚

2
您首先应git -C (brew --repo homebrew/core) fetch --unshallow确保具有完整的酿造git历史记录。
诺亚

44
这么多戏剧性的纱线升级。
埃里克·沃克

4
这是唯一对我有用的解决方案,谢谢!就我而言,问题是ffmpeg软件包,我假设安装了的较新版本icu4c。更新,升级brew都行不通,也没有重新安装,重新链接,从源代码构建php。
gedijedi

5
就我而言,我需要icu4c v63,因此结帐的相关承诺是bc0c97952453ff6afc146aa3a706e9902aba4300。git命令是git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbbrew switch 63.1
nahuelhds

39

升级macOS到version 后,我遇到了同样的问题10.13.6。我无法运行composerphp命令。经过一段时间的研究并尝试了各种在线发布的解决方案,然后重新安装php homebrew

brew reinstall php@7.1

根据Ryan的评论于3月14日添加

通过运行php -v获取当前正在使用的版本,并获取正确的公式(可在此处找到:https : //formulae.brew.sh/formula/php)以替换@7.1上面的命令。


8
node在将macOS升级到之后10.14.2,我也遇到了同样的错误,brew reinstall node这对我也同样适用
gnmerritt

用brew安装新软件包后,我开始收到此错误。正在brew upgrade为我修复它。
武士杰克

1
brew reinstall php可能最终会安装与当前版本不同的版本。您可能需要使用php@7.1
Ryan

3
php -v如果您的PHP损坏,则无法通过运行获取当前版本:p
gingerCodeNinja

1
@gingerCodeNinja是正确的,也许这可能会有所帮助:对于Mac OS,请在终端上运行echo $PATH(如果有的话php,应该会看到类似以下内容:),/usr/local/opt/php@7.2/bin这是找出当前使用的版本的一种方法。
阿伦·卡纳蒂

33

运行npm version,看看是否看到相同的错误。

如果是这样,请升级您的npm版本brew upgrade npm

==> Upgrading 1 outdated package, with result:
npm 8.1.2 -> 10.3.0
==> Upgrading npm
==> Installing dependencies for node: icu4c
==> Installing node dependency: icu4c

学分


15

这为我解决了:

brew upgrade node

1
这也为我工作。我从来没有完全研究过它,但是我相信brew在升级节点时也修复了依赖关系。与Brew升级相比,这包含了更多的内容。
hendrikbeck

1
似乎是类似的情况,>“ brew reinstall node”在切换到Catalina后确实对我有所帮助
greencrest

9

公正brew remove phpbrew install php没有工作,也没有brew reinstall php。我的解决方案是:

brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup

现在php -v给我:

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )

5

好像是不可能的链接icu4c使用brew最新的OS X更新后。这使事情变得更有趣。我发现对我有用的唯一解决方案:

  1. 下载并编译icu4c62.1到/usr/local/icu4c/62.1
mkdir ~/sources
cd ~/sources
wget http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
tar xvzf icu4c-62_1-src.tgz
cd icu/source/

sudo mkdir /usr/local/icu4c/62.1
./configure --prefix=/usr/local/icu4c/62.1
make
sudo make install
  1. 链接库:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. 设置DYLD_LIBRARY_PATH~/.bash_profile
export DYLD_LIBRARY_PATH=/usr/local/include

1
我正在运行PHP 7.1,这是唯一对我有用的东西。
WebTigers

就我而言,我需要64.2版本,因此我从github.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm



2

对我来说,brew reinstall nodejs此问题已解决-我的问题是运行Elixir / Phoenix,而不是特定于PHP,我认为这是由引起的brew install postgres,但是重新安装并没有帮助。我从npm命令中得到它。


2

brew update && brew upgrade 为我工作


欢迎来到SO!欢迎您的合作。在这种情况下,还有15个问题,因此向您展示自己的优点将是不错的选择。
DavidGarcíaBodego,

1

与其安装旧版本的icu4c(预编译的)PHP可以链接的旧版本,不如重新编译旧版本的PHP以链接到最新的库,这更好。

brew uninstall php@7.2
brew install --build-from-source php@7.2

这将构建php并将其链接到更新的库。我发现reinstall工作还不够。当目标文件夹已存在时,新安装将停止。

我也brew link --force php@7.2为我的环境而努力。


尝试过但没有改善;但是,格雷·布莱克的brew switch icu4c 62.1命令对我有用。
杰米·伯奇

1

Leland的答案对我有用,但是我必须将步骤4和6更改为:

4)git checkout -B icu4c-62.1 575eb4b

6)brew重新安装Formula / icu4c.rb


1

为了降级,我不得不从源代码重新编译(MacOS Mojave)

$ wget https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
$ tar xvfz icu4c-62_1-src.tgz
$ cd icu/sources
$ ./configure
$ make
$ make install


1

在OSX 10.15.4上运行xcode-select --install,已为我解决了该问题。



0

在安装php 7.3之后也遇到了此错误。我解决了仅升级我的旧php版本(5.6和7.0,而不是来自官方回购协议)的问题。

维护人员已针对当前的icu4c编译了新的php版本。

就我而言,PHP 7从0.31升至0.33,问题得以解决。


这不是其他答案所涵盖的吗?
JJ for Transparency和Monica,

海事组织,不。一个答案是关于重新编译的,我要做的是“更新”。
DavidFernándezRafael

从非官方存储库升级后,我也收到了此错误,但brew升级节点已修复它。
user3685048

0

要点中的解决方案为我做到了

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.