我使用Homebrew (Mojave)安装了Node.js后,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,但问题仍然存在。
我使用Homebrew (Mojave)安装了Node.js后,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,但问题仍然存在。
brew cleanup
可能会修复此错误,如果仅此无法解决问题,则可以尝试升级单个软件包或所有brew软件包。brew upgrade icu4c
brew upgrade // or upgrade all packages
最后
brew cleanup
brew upgrade
这个命令,因为它会升级 所有 过期的 homebrew 软件包,相反,最好只运行 brew upgrade npm
或者是指定某个软件包进行升级,而不是全部升级。 - xgMz这在我的情况下发生,是因为icu4c被升级到了版本63,但我本地安装的postgres镜像仍然引用了icu4c 62.1。因此,我不得不更改使用的icu4c版本:
brew info icu4c
brew switch icu4c <version>
其中version
是由info
返回的已安装版本。
brew list icu4c
显示的是从/usr/local/Cellar/icu4c/63.1
路径下的文件。通过运行brew switch icu4c 63.1
命令,问题得到了解决。 - Steven Ensslenbrew switch icu4c 63.1
,但是在重新启动Postgres后仍然在日志中看到相同的错误。不确定接下来该怎么办... - Andrewbrew reinstall postgres
,这似乎解决了我的问题。 - Andrewbrew switch
命令是brew link
。 - Simone实际上,我很惊讶这个解决方案还没有被提出,而且我觉得这是最简单的解决方案。
去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
更新:
较新的Homebrew版本可能需要您先下载该文件。如果是这种情况:
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
brew reinstall icu4c.rb
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
,使用以下命令可以修复它:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
。 - John Karybrew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
。 - Magnusbrew reinstall icu4c.rb
。 - Patrick Fabriziusbrew reinstall icu4c
就可以了。感谢你指导我朝着正确的方向前进! - Joel Mellon运行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
brew upgrade
),而当前的npm版本仅支持71。因此,将npm升级到最新版本以匹配新升级的icu4c版本解决了我的问题。 - free2idol1brew switch icu4c 62.1
无效。这需要更多的工作。Homebrew不方便安装先前版本的公式。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
git -C (brew --repo homebrew/core) fetch --unshallow
来确保你拥有完整的 brew git 历史记录。 - Noahicu4c
。无论是更新、升级brew,还是重新安装、重链、从源代码构建php,都没有生效。 - gedijedigit checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rb
然后执行 brew switch 63.1
。 - nahuelhds==> 正在下载 https://ghcr.io/v2/homebrew/core/icu4c/manifests/67.1 #=#=-# # curl: (22) 所请求的 URL 返回错误: 404 Error: 未能下载资源“icu4c_bottle_manifest” 下载失败: https://ghcr.io/v2/homebrew/core/icu4c/manifests/67.1
。 - bluepandabrew
已经更新了。命令结构已经改变,"formula"的格式也发生了变化。我通过编辑ruby来适应新的格式来解决了格式问题。但是这并没有帮助我,因为正如@bluepanda所说,https://ghcr.io/v2/homebrew/core/icu4c/manifests/64.2
已经不存在了。不过我找到了一种替代的公式,并且它对我起作用:https://gist.github.com/bbatsche/c1c747bb9297661772ae7e106c556c3f。我使用`wget`拉取文件,然后使用`brew reinstall Icu4c@64.rb,接着使用
brew link Icu4c@64`。现在我将退回到我的archlinux盒子的简单性中 :) - starfry对我来说解决方法是:
brew reinstall icu4c
那么
gem uninstall charlock_holmes
gem install charlock_holmes
brew reinstall icu4c
命令就解决了我的问题。谢谢。 - Chau Phambrew reinstall icu4c
。 - Theodorycharlock_holmes
才能解决问题。 - Yuri Sidorovvips
的错误。 - GabrielmacOS
升级到版本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
。node
时遇到了相同的错误,brew reinstall node
对我也很有帮助。 - gnmerrittbrew upgrade
命令解决了我的问题。 - samurai jackbrew reinstall php
may end up installing a different version to the current one. You may have to specify the version using php@7.1
- Ryanphp -v
命令也无法获取当前版本号。 :p - gingerCodeNinjaecho $PATH
(如果你有 php
,你应该会看到类似这样的东西:/usr/local/opt/php@7.2/bin
),这是一种查找当前正在使用的版本的方法。 - Arun Karnati以下方法解决了我的问题:
brew upgrade node
/icu4c/lib/libicui18n.66.dylib
错误。我隐藏了我的一些代码更改,但错误仍然出现。升级node解决了问题!谢谢! - Jon Kern我实际上尝试了所有在此帖子中有意义的解决方案,但当运行 php -v
或 composer
时,仍然会出现相同的错误。
Node 版本正常,npm 也是如此,安装的版本无误,且它们都在运行。
运行 reinstall php@7.1
只会抛出一个错误。
最终我不得不运行:
brew reinstall icu4c
这基本上是可行的,但我需要手动安装PHP依赖项,例如imagick.so
、imap.so
等库。由于这些库是为我不再维护的项目安装的,因此我可以不使用它们。但如果您确实有依赖它们的需求,请记住之后还需要更多的工作。
npm install
无法正常工作。原始来源在此处找到:https://gist.github.com/berkedel/d1fc6d13651c16002f64653096d1fded - Kingsley最近的OS X更新后,似乎不可能使用brew链接icu4c。这使事情更有趣。我找到的唯一解决方案是:
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
node@12
和 icu4c@71.1
的安装,可以通过以下命令实现:$ ln -sf /usr/local/Cellar/icu4c@71.1/71.1/lib/*.dylib /usr/local/lib/
。 - Marslo
/usr/local/opt/icu4c
目录不存在,并且brew reinstall icu4c
命令在 icu4c 目录上出现了很多 "permission denied" 错误。所以我使用了sudo rm -rf /usr/local/Cellar/icu4c
命令删除了目录,然后再次执行brew reinstall icu4c
命令,一切都正常了。 - Seth Johnsonbrew upgrade
就帮助了我。 - Maxim Yefremov