我使用自制软件(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,但问题仍然存在
更新 - 如某些评论中所述,运行
brew cleanup
可能会修复此错误,如果仅靠它不能解决它,您可以尝试升级单个包或所有 brew 包。
我只是遇到了同样的问题。升级自制软件,然后清理对我有用。由于软件包版本不匹配,此错误可能出现在我身上。上述解决方案都没有解决我的错误,但运行以下自制命令可以解决。
注意- 这将升级您的所有brew软件包,包括但不限于PHP。如果您只想升级特定软件包,请确保是特定的。
brew upgrade icu4c
brew upgrade // or upgrade all packages
最后
brew cleanup
就我而言,发生这种情况是因为 icu4c 已升级到版本 63,但我本地安装的 postgres 映像仍引用 icu4c 62.1。因此,我不得不更改使用的 icu4c 版本:
brew info icu4c
brew switch icu4c <version>
其中version
是info
返回的已安装版本。
我实际上很惊讶这个解决方案还没有提出,我觉得这是最简单的解决方案。
转到 GitHub,找到与所需icu4c
版本匹配的 brewfile 版本,并获取文件的原始版本(点击上面的链接并单击View File
然后单击Raw
)。
然后只需从该网址重新安装brew即可。
例如,版本62.1
:
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
例如,版本64.2
:
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
更新:
更高版本的自制软件可能需要您先下载文件。如果是这种情况:
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
brew reinstall icu4c.rb
运行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
学分
事实证明,我和@Grey Black一样,不得不实际安装icu4c的v62.1。其他方法都不起作用。
但是,brew switch icu4c 62.1
仅在您过去安装了 62.1 时才有效。如果你没有,就会有更多的跑腿工作。自制软件使安装以前版本的公式变得不容易。
这是我是如何做到的:
- 我们首先需要自制存储库的深度克隆。这可能需要一段时间:
git -C $(brew --repo homebrew/core) fetch --unshallow
brew log icu4c
跟踪引用 62.1 的提交;575eb4b
做到了。cd $(brew --repo homebrew/core)
git checkout 575eb4b -- Formula/icu4c.rb
brew uninstall --ignore-dependencies icu4c
brew install icu4c
您现在应该拥有正确版本的依赖项!现在只是...git reset && git checkout .
清理修改后的食谱。brew pin icu4c
固定依赖项以防止将来意外升级
如果您决定在某个时候升级它,请确保运行brew unpin icu4c
对我来说,解决方案是:
brew reinstall icu4c
然后
gem uninstall charlock_holmes
gem install charlock_holmes
将macOS
升级到版本10.13.6
后,我遇到了同样的问题。我无法运行composer
和php
命令。经过一段时间的研究并尝试了在线发布的各种解决方案,使用homebrew
重新安装 php 是有效的。
brew reinstall php@7.1
根据 Ryan 的评论于 3 月 14 日添加
通过运行php -v
获取当前使用的版本,并获取正确的公式(您可以在此处找到:https://formulae.brew.sh/formula/php)以替换上述命令中的@7.1
。
这为我修复了它:
brew upgrade node
我实际上尝试了这篇文章中提到的所有有意义的解决方案,但在运行php -v
或composer
时仍然遇到相同的错误。 节点版本很好,npm 也没有安装正确版本的问题,它们都在运行。 运行reinstall php@7.1
只是抛出了一个错误。 最后我不得不跑:
brew reinstall icu4c
这基本上有效,我必须手动安装 php 依赖项,例如imagick.so
、imap.so
由于这些库是为我不再维护的项目安装的,因此我可以没有它们。但是,如果您确实依赖它们,请记住,之后会有更多的工作要做。
似乎在最新的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 remove php
和brew 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 )
我的问题:
# npm install -g canvas
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
Referenced from: /usr/local/opt/node@8/bin/node
Reason: image not found
现在20210118,经过多次尝试:
...
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb
brew upgrade npm
brew install node
brew uninstall --ignore-dependencies node@8 icu4c
brew install icu4c
...
最终工作的解决方案是:
brew reinstall npm
对我来说,它出现了node@12 以下步骤对我有用——
brew uninstall --ignore-dependencies icu4c
brew install node
它自动安装了ICU4C并修复了整个事情。
对我来说brew reinstall nodejs
解决了这个问题 - 我的问题是运行 Elixir/Phoenix,所以不是 PHP 特定的,我认为这是由brew install postgres
引起的,但重新安装它没有帮助。我是从npm
命令中得到的。
实际上,我直接在自制页面上找到了解决方案:https://docs.brew.sh/Common-Issues
升级 macOS 可能会导致如下错误:
dyld:- 库未加载:/usr/local/opt/icu4c/lib/libicui18n.54.dylib 配置: 错误: 找不到 libz
- 在macOS升级后,可能需要重新安装Xcode命令行工具并升级所有已安装的公式:
xcode-select --install
brew upgrade
就我而言,问题与升级操作系统无关,但解决方案运行良好。
2021-02简单的解决方案
经过多年的处理这个问题,以下非常简单的解决方案对我有用:
- 在 Web 浏览器中打开所需版本的原始文件:
版本62:https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
版本64:https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
版本66:https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
版本 67:https://raw.githubusercontent.com/Homebrew/homebrew-core/88b9cc789820f2f544d8d4a1053eebb044c2926c/Formula/icu4c.rb
最新版本: https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb
- 复制粘贴内容到名为: ICU4C.rb
- 在新创建的文件上运行以下命令:
brew reinstall icu4c.rb
来源:https://gist.github.com/hgrimelid/703691ab48c4a4d0537cfe835b4d55a6
>brew update && brew upgrade
为我工作
为了降级,我不得不从源代码(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
这就是最终对我有用的。
brew reinstall postgres
运行上述命令后,您可能需要运行
brew postgresql-upgrade-database
以访问您之前的数据。
我在这里关注了这篇文章,这似乎是我缺少的一块拼图:
brew uninstall node@8
在MacOS Mojave上,我唯一可以修复它的方法是使用brew upgrade
关于恢复丢失的icu4c
版本的很多答案。我在postgresql
上遇到了同样的错误,我想这可以表现为依赖于动态链接该库的各种程序。
对我来说,我正在使用特定版本的postgresql
,即postgresql@12
.我发现最简单的解决方法是重新安装它
brew reinstall postgresql@12
我想这对php
也有效。
与其安装旧版(预编译的)php可以链接到的旧版icu4c
,不如重新编译旧php以链接到更新的库。
brew uninstall php@7.2
brew install --build-from-source php@7.2
这将构建 php 并将其链接到较新的库。我发现reinstall
不太管用;当目标文件夹已存在时,新安装窒息。
我也为我的环境做了brew link --force php@7.2
。
我遇到了问题,因为我的PHP(7.3)版本期待icu4c 63,而brew只会安装64。
https://stackoverflow.com/a/55828190/2000947 帮助我安装了 63。
在运行xcode-select --install
的OSX 10.15.4上为我解决了这个问题。
Leland 的回答对我有用,但我不得不将步骤 4 和 6 更改为:
4) git 结帐 -B ICU4C-62.1 575EB4B
6) 冲泡重新安装公式/icu4c.rb
这个要点中的解决方案为我做到了
brew uninstall --ignore-dependencies node icu4c
brew install node
就我而言,将 icu4c 更新到版本 67.1,所以我的 php7.1 不起作用。 只需重新安装 icu4c,就可以了。
参考这个: https://devhoi.com/threads/error-dyld-library-not-loaded-usr-local-opt-icu4c-lib-libicui18n-64-dylib-with-php7-1.26/
[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
在那之后,node
和npm
再次工作。
引用
- @Taher的回答 https://stackoverflow.com/a/63045892/16681513
安装 php 7.3 后也出现此错误。我解决了只升级旧 php 版本(5.6 和 7.0,而不是来自官方存储库)的问题。
维护者针对当前的icu4c编译了新的php版本。
就我而言,PHP 7 从 0.31 变为 0.33,问题解决了。