dyld:库没有加载:/usr/local/lib/libjpeg.8.dylib – homebrew php

由于我遇到这个libpng问题 ,PHP并不适合我,所以我重新安装了一个新版本的Homebrew。

不过,这次我得到了libjpeg类似的错误:

 $ php -v dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib Referenced from: /usr/local/bin/php Reason: image not found Trace/BPT trap: 5 

有什么build议么?

正如@ jirson-tavera在homebrew-php回购问题中所提出的那样,可以在不重写brew的情况下修复这个问题 :

 wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz tar xzf jpegsrc.v8d.tar.gz cd jpeg-8d ./configure make cp ./.libs/libjpeg.8.dylib /usr/local/opt/jpeg/lib 

尽pipe接受答案中的解决scheme有效,但解决问题的方法并不正确。 它违反了brew的元数据完整性。

问题

问题是Homebrew的jpeg公式已经升级到v9,但现有的“瓶装”PHP公式仍然与之前的版本v8build立并链接,而这个版本已经不存在于你的系统中。

你有几个select来解决这个问题。

1.从源代码重新编译phpxx公式(强烈推荐)

卸载你的PHP公式,并从源代码重build,而不是使用瓶装版本。 这样,PHP将使用并链接到当前安装的jpeg版本。 假设你正在处理php71

 brew reinstall php71 --build-from-source 

2.正确的方式降级jpeg公式(推荐)

如果您还没有进行brew cleanup ,您已经在冲泡的酒窖中获得了以前的jpeg版本,请切换至:

 brew switch jpeg 8d 

如果你得到一个jpeg does not have a version "8d" in the Cellar. 错误,您需要先恢复它恢复历史logging:

 cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core git checkout b231469 HOMEBREW_NO_AUTO_UPDATE=1 brew install jpeg git checkout master brew switch jpeg 8d 

你可以通过使用brew log jpeg并通过提交消息来find提交散列。

缺点是可能有其他公式需要更新的版本才能正常工作,例如imagemagick 。 如果遇到这种不兼容问题,请检查上面的第一个解决scheme。

3.通过手动重新编译来降级jpeg (不推荐)

获取源代码,编译并覆盖brew的版本。 有关详细信息,请参阅Denis的答案 。

不推荐这样做,因为它违反了brew元数据的完整性。 Brew认为它有8b版本,但是,您手动编译9b并覆盖了这些文件。

4.手动符号链接旧版本(不推荐)

不要手动符号链接剩下的libjpeg.8.dylib 。 如果该文件在那里,您可以按照上面的第二个解决scheme中的说明将其brew switch到该文件。

这只是最糟糕的黑客。


这个问题最终将被修复 。

今天我遇到了类似的问题。 问题的原因是libjpeg的更新版本。 而解决scheme的工作是从源头上构buildphp瓶。

检查libjpeg可用版本:

 $brew info libjpeg jpeg: stable 9b (bottled) Image manipulation library http://www.ijg.org /usr/local/Cellar/jpeg/9b (20 files, 724KB) * Poured from bottle on 2017-08-07 at 12:06:42 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/jpeg.rb 

从源代码安装php

 brew install --build-from-source php56 

更新
如果你已经安装了php你必须从源代码构build之前卸载它。 它也适用于扩展。

我有同样的问题,我解决了从这里下载libjpeg tarball manuallu并运行:

 tar zxvf jpegsrc.v6b.tar.gz cd jpeg-6b cp /usr/share/libtool/config.sub . cp /usr/share/libtool/config.guess . ./configure --enable-shared --enable-static make sudo make install sudo ranlib /usr/local/lib/libjpeg.a #Optionally 

我没有尝试Jirson的回答,但是对我有效的是:

 brew uninstall libjpeg brew install libjpeg 

我正在尝试升级composer

dyld:库未加载:/usr/local/opt/jpeg/lib/libjpeg.8.dylib
参考:/ usr / local / bin / php
原因:找不到图片
composer php:这个公式需要PHP Phar支持
错误:未满足的需求未能通过此构build。

问题是php无法findlibjpeg库了。 解决这个问题的一个方法是重新安装phplibjpeg 。 以下是我重新安装它们的方法:

 # find out which version of php is installed brew list | grep php # uninstall php brew uninstall php70 --ignore-dependencies # uninstall libjpeg brew uninstall libjpeg --ignore-dependencies # install libjpeg again brew install libjpeg # install php again brew install php70 

我当时能够再次升级所有东西:)

 brew update && brew upgrade 

🍻

我遇到了同样的问题,唯一帮助的是使用--build-from-source参数:

 brew install php70 --build-from-source 

我分享这个,因为我有使用PHP5.4相同的问题。 最初,我有PHP5.6,它工作正常。 然后我降级到php5.4,因为我的应用程序只支持PHP5.4。

然后这个错误出现了。 我注意到,我有libjpeg.9.dylib和PHP5.4正在寻找libjpeg.8.dylib

按照以下步骤sorting问题:

 brew uninstall php54 brew install --build-from-source php54 

Homebrew的PHP已经更新,不再是libjpeg的问题

正如@lifecom所指出的,这是用自制的php70更新修复的,但是如果brew upgrade在升级php70之前尝试更新其他软件包的话,你可能会遇到这个问题。

通过手动更新php70首先用brew upgrade php70来解决这个问题,然后你应该可以运行brew upgrade没问题(或者至less在没有这个问题的情况下)。

我也有这个问题。 我解决这个问题:卸载jpeg / 8b:

 brew uninstall --ignore-dependencies libjpeg 

卸载jpeg / 9b:

 brew uninstall --ignore-dependencies jpeg 

卸载jpeg / 8b和9b

重新安装jpeg / 9b

 brew install jpeg 

重新安装jpeg / 9b