我使用自制(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 5.6项目(使用旧的icu4c 64.2)。由于某些原因,从原始.rb链接进行安装和重新安装总是会替换以前安装的版本。

#fetching 64.2
brew fetch https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb 

#fetching stable version
brew fetch https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb 

cd $(brew --cache)/downloads
tar xvfz e2a83648f37dc5193016ce14fa6faeb97460258b214e805b1d7ce8956e83c1a7--icu4c-64.2.catalina.bottle.tar.gz
tar xvfz e045a709e2e21df31e66144a637f0c77dfc154f60183c89e6b04afa2fbda28ba--icu4c-67.1.catalina.bottle.tar.gz
mv -n icu4c/67.1 $(brew --cellar)/icu4c/
mv -n icu4c/64.2 $(brew --cellar)/icu4c/

然后在版本之间切换

$ brew switch icu4c 64.2
Cleaning /usr/local/Cellar/icu4c/64.2
Cleaning /usr/local/Cellar/icu4c/67.1
Opt link created for /usr/local/Cellar/icu4c/64.2

$ brew switch icu4c 67.1
Cleaning /usr/local/Cellar/icu4c/64.2
Cleaning /usr/local/Cellar/icu4c/67.1
Opt link created for /usr/local/Cellar/icu4c/67.1

其他回答

我已经尝试了这里的许多建议,最后酿造升级php是对我有用的,但似乎这个问题无处不在

在MacOS Mojave上,我唯一能修复它的方法是brew升级

在最新的OS X更新后,似乎不可能使用brew链接icu4c。这让事情变得更有趣。我找到的唯一解决办法是:

下载并编译icu4c 62.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

链接库:

ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/

在~/.bash_profile中设置DYLD_LIBRARY_PATH:

export DYLD_LIBRARY_PATH=/usr/local/include

更新-正如在一些评论中所述,运行brew cleanup可能会修复此错误,如果这本身无法修复它,您可以尝试升级单个包或所有的brew包。

我也有同样的问题。升级Homebrew然后清理对我来说很有效。这个错误可能是由于包版本不匹配造成的。上面的解决方案都不能解决我的错误,但是运行下面的自制程序命令可以。

注意:这将升级你所有的酿造包,包括但不限于PHP。如果你只想升级特定的包,请确保是特定的。

brew upgrade icu4c

brew upgrade // or upgrade all packages

最后

brew cleanup

[2022 Build It Yourself Edition]

适用于我的Mac OS 11.6.8大苏尔。

$ 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

在那之后,node和npm又开始工作了。

参考文献

@Taher的回答 https://stackoverflow.com/a/63045892/16681513