dyld:Library未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib在Mac上安装brew节点后运行php时出错

dyld:Library未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib在Mac上安装brew节点后运行php时出错,php,node.js,macos,homebrew,Php,Node.js,Macos,Homebrew,我使用自制软件(Mojave)安装了node,之后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升级到版本10.13.6后遇到了相同的

我使用自制软件(Mojave)安装了node,之后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
升级到版本
10.13.6
后遇到了相同的问题。我无法运行
composer
php
命令。在研究了一段时间并尝试了在线发布的各种解决方案后,使用
homebrew
重新安装php成功了

brew重新安装php@7.1

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


通过运行
php-v
获取当前使用的版本,并获取正确的公式(您可以在此处找到:)以替换上述命令中的
@7.1

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

 brew info icu4c
 brew switch icu4c <version>
brew信息icu4c
brew交换机icu4c

其中,
version
是由
info

返回的已安装版本,结果是我像@Grey Black一样,不得不实际安装icu4c的v62.1。没有别的办法

但是,
brew switch icu4c 62.1
仅在您以前安装过62.1时才起作用。如果你还没有,还有更多的腿部工作要做。Homebrew不提供以前版本的公式

我是这样做的:

  • 我们首先需要一个自制回购协议的深度克隆。这可能需要一段时间:
    git-C$(brew--repo自制/core)fetch--unslow
  • brew日志icu4c
    以跟踪引用62.1的提交;这就是诀窍
  • cd$(brew——回购自制/核心版)
  • git checkout 575eb4b--Formula/icu4c.rb
  • brew卸载--忽略依赖项icu4c
  • brew安装icu4c
    您现在应该拥有正确版本的依赖项!现在只想
  • git重置和&git签出。
    清理修改后的配方
  • brew pin icu4c
    锁定依赖项以防止将来意外升级

  • 如果您决定在某个时候升级它,请确保运行
    brew unpin icu4c

    而不是安装旧版本的
    icu4c
    ,旧版本(预编译)php可以链接到该版本,最好重新编译旧的php以链接到较新的库

    brew uninstall php@7.2
    brew install --build-from-source php@7.2
    
    这将构建php并将其链接到较新的库。我发现
    重新安装
    不太管用;当目标文件夹已存在时,新安装被阻塞


    我还做了
    brew链接--forcephp@7.2
    适用于我的环境。

    只是
    brew删除php
    brew安装php
    不起作用,也没有
    brew重新安装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 )
    
    更新-如某些评论中所述,运行
    brew cleanup
    可能会修复此错误,如果仅此一项无法修复此错误,您可以尝试升级单个软件包或所有brew软件包

    我也有同样的问题。升级自制然后清理对我来说很有效。这个错误可能出现在我身上,因为包版本不匹配。上述解决方案都没有解决我的错误,但运行以下自制命令就解决了

    注意-这将升级所有brew软件包,包括但不限于PHP。如果您只想升级特定的软件包,请确保是特定的

    最后

    brew cleanup
    

    最新OS X更新后,似乎无法使用
    brew
    链接
    icu4c
    。这让事情变得更有趣。我发现唯一适合我的解决方案是:

  • 下载并编译
    icu4c
    62.1至
    /usr/local/icu4c/62.1
  • 链接库:
  • ~/.bash\u配置文件中设置
    DYLD\u库路径

  • Leland的回答对我很有用,但我不得不将第4步和第6步改为:

    4) git签出-B icu4c-62.1 575eb4b


    6) brew重新安装公式/icu4c.rb

    在安装PHP7.3后也出现此错误。我决定只升级我的旧php版本(5.6和7.0,而不是从官方回购协议)

    维护人员根据当前的icu4c编译了新的php版本


    在我的例子中,PHP7从0.31变为0.33,问题就解决了。

    运行
    npm版本
    ,如果您看到相同的错误,请升级npm

    brew升级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
    

    事实上,我很惊讶这个解决方案还没有出现,我觉得这是最简单的解决方案

    转到GitHub,找到与所需的
    icu4c
    版本匹配的brewfile版本,并获取文件的原始版本(按照上面的链接,单击
    查看文件
    ,然后单击
    原始

    然后让brew从该url重新安装

    例如,版本
    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
    

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


    帮助我安装63。

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

    这为我解决了这个问题:

    brew upgrade node
    

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

    对我来说
    brew重新安装nodejs
    修复了这个问题-我的问题是运行Elixir/Phoenix,所以不是特定于PHP的,我认为这是由
    brew安装postgres
    引起的,但重新安装没有帮助。我是通过
    npm
    命令获得它的。

    brew更新和brew升级
    brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
    
    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
    
    $ 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 upgrade node
    
    brew uninstall node@8
    
    brew uninstall --ignore-dependencies node icu4c
    brew install node
    
    #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
    
    https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
    
    https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb 
    
    https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
    
    https://raw.githubusercontent.com/Homebrew/homebrew-core/88b9cc789820f2f544d8d4a1053eebb044c2926c/Formula/icu4c.rb
    
    brew reinstall icu4c
    
    cd /usr/local/Homebrew/
    
    git checkout 2.3.0
    
    HOMEBREW_NO_AUTO_UPDATE=1 brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
    
    git checkout -
    
    brew switch icu4c 64.2
    
    # 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
    
    ...
    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
    ...
    
    update.packages(checkBuilt = TRUE, ask = FALSE)