我使用自制(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

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


当前回答

与其安装旧版本的icu4c,让旧的(预编译的)php可以链接到它,不如重新编译旧的php以链接到最新的库。

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

这将构建php并将其链接到更新的库。我发现重新安装不太管用;当目标文件夹已经存在时,新的安装阻塞。

我还为我的环境做了brew link -force php@7.2。

其他回答

在OSX 10.15.4上运行xcode-select——install修复了这个问题。

运行npm version,如果你看到同样的错误,升级npm。

酿造升级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

学分

这是最后对我有用的方法。

酿造重新安装postgres

运行上述命令后,您可能需要运行

酿造postgresql-upgrade-database

访问您以前的数据。

结果我和@Grey Black一样,不得不安装icu4c的v62.1版本。其他方法都不管用。

但是,酿造开关icu4c 62.1仅在过去安装过62.1的情况下才能工作。如果你还没有,就需要做更多跑腿的工作。Homebrew不容易安装以前版本的公式。

我是这样做的:

We first need a deep clone of the Homebrew repo. This may take a while: git -C $(brew --repo homebrew/core) fetch --unshallow brew log icu4c to track down a commit that references 62.1; 575eb4b does the trick. cd $(brew --repo homebrew/core) git checkout 575eb4b -- Formula/icu4c.rb brew uninstall --ignore-dependencies icu4c brew install icu4c You should now have the correct version of the dependency! Now just to... git reset && git checkout . Cleanup your modified recipe. brew pin icu4c Pin the dependency to prevent it from being accidentally upgraded in the future

如果你决定在某个时候升级它,一定要运行brew unpin icu4c

在我的情况下,我重新安装与Homebrew安装的所有包

$ brew list | xargs brew reinstall

之后,我开始安装我需要的版本