我使用自制(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,但问题仍然存在


当前回答

为了降级,我不得不从源代码(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

其他回答

我把macOS升级到10.13.6版本后也遇到了同样的问题。我不能运行composer和php命令。在研究了一段时间并尝试了网上发布的各种解决方案后,使用homebrew重新安装php成功了。

酿造重新安装php@7.1

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

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

在我的例子中,发生这种情况是因为icu4c升级到版本63,但我在本地安装的postgres映像仍然引用icu4c 62.1。因此,我不得不改变使用的icu4c版本:

 brew info icu4c
 brew switch icu4c <version>

其中version是info返回的已安装版本。

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

https://stackoverflow.com/a/55828190/2000947帮我安装了63。

我实际上尝试了所有有意义的解决方案,在这篇文章中提到的,但我仍然在运行php -v或composer时得到相同的错误。 节点版本很好,npm也没有安装正确版本的问题,它们都在运行。 运行重新安装php@7.1会抛出一个错误。 最后我不得不逃跑:

brew reinstall icu4c

这基本上是可行的,我必须手动安装php依赖项,如imagick。所以,imap.so 由于这些库是为一个我不再维护的项目安装的,我可以没有它们。但如果你确实依赖他们,请记住,之后会有更多的工作要做。

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

$ brew list | xargs brew reinstall

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