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
库了。 解决这个问题的一个方法是重新安装php
和libjpeg
。 以下是我重新安装它们的方法:
# 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 / 9b
brew install jpeg