dyld:未加载库:/usr/local/lib/libjpeg.8.dylib - 自制程序 php
dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib - homebrew php
PHP 对我不起作用,因为我遇到了 this libpng issue,所以我用 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
有什么建议吗?
我遇到了同样的问题,我通过从 here 和 运行 下载 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
我今天遇到了类似的问题。问题的原因是 libjpeg
的较新版本。有效的解决方案是从源头构建 php
瓶子。
检查 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
,则必须在从源代码构建之前将其卸载。它也适用于扩展。
正如@jirson-tavera 在 homebrew-php repo issue 中所建议的那样,无需覆盖您的 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
我遇到了同样的问题,唯一有用的是使用 --build-from-source
参数:
brew install php70 --build-from-source
Homebrew php 已更新,不再是 libjpeg 的问题
我分享这个是因为我在使用 PHP5.4 时遇到了同样的问题。最初,我有 PHP5.6,它工作正常。然后我降级到 php5.4 因为我的应用程序只支持 PHP5.4.
然后就出现了这个错误。我注意到我有 libjpeg.9.dylib
和 PHP5.4 正在寻找 libjpeg.8.dylib
。
执行以下操作解决了问题:
brew uninstall php54
brew install --build-from-source php54
正如@lifecom 指出的那样,这已通过自制程序的 php70 更新修复,但如果 brew upgrade
在升级之前尝试更新其他软件包,您可能仍然 运行 遇到问题 php70.
首先用brew upgrade php70
手动更新php70来解决这个问题,然后你应该能够运行 brew upgrade
没问题(或者,好吧,至少没有这个问题)。
尽管接受的答案中的解决方案有效,但这并不是解决问题的正确方法。它违反了 brew 的元数据完整性。
问题
问题是 Homebrew 的 jpeg
公式已升级到 v9,但现有的“瓶装”PHP 公式仍在构建,并且 link 与以前的版本 v8 相比,它不再存在于您的系统中。
您有几个选项可以解决此问题。
1。从源 重新编译 phpxx
公式(强烈推荐)
卸载您的 php 公式,并从源代码重建它,而不是使用瓶装版本。这样,php 将针对当前安装的 jpeg
版本使用 link。假设您正在处理 php71
:
brew reinstall php71 --build-from-source
2。以正确的方式降级 jpeg
公式 (优于手动重新编译)
如果你还没有 运行 brew cleanup
,你已经在你的 brew 地窖里得到了以前的 jpeg
版本,切换到它:
brew switch jpeg 8d
如果出现jpeg does not have a version "8d" in the Cellar.
错误,您需要先通过还原历史来恢复它:
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
并查看提交消息来找出提交哈希值。
缺点是可能有其他公式需要较新版本才能正常工作,例如imagemagick
。如果您遇到此类不兼容问题,请查看上面的第一个解决方案。
3。通过手动重新编译 降级 jpeg
(不推荐)
获取源代码,编译并覆盖 brew 的版本。详见。
不推荐这样做,因为它违反了 brew 元数据的完整性。 Brew 认为它有 8b 版本,但是,您手动编译 9b 并覆盖文件。
4。手动 symlink 旧版本 (严重吗?)
不要manually symlink剩下的libjpeg.8.dylib
。如果文件在那里,你可以像上面第二个解决方案中提到的那样 brew switch
到它。
这只是您在这里可以做的最糟糕的黑客攻击。
此类问题最终会fixed。
我在尝试升级时遇到了类似的问题 composer
:
dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
composer: PHP Phar support is required for this formula
Error: An unsatisfied requirement failed this build.
问题是 php
找不到 libjpeg
库了。解决此问题的一种方法是重新安装 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
我也有这个问题。我是这样解决的:
卸载 jpeg/8b:
brew uninstall --ignore-dependencies libjpeg
卸载jpeg/9b:
brew uninstall --ignore-dependencies jpeg
重新安装jpeg/9b
brew install jpeg
以下命令对我有用。
brew switch libjpeg 8d
一个肮脏的解决方案,对我来说工作得很好。
ln -s /usr/local/lib/libjpeg.9.dylib /usr/local/lib/libjpeg.8.dylib
在某些情况下,尤其是在 Catalina 中,程序包的 Homebrew cask 可能存在但未正确链接。在那种情况下尝试:
brew link libjpeg
brew reinstall php --build-from-source
PHP 对我不起作用,因为我遇到了 this libpng issue,所以我用 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
有什么建议吗?
我遇到了同样的问题,我通过从 here 和 运行 下载 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
我今天遇到了类似的问题。问题的原因是 libjpeg
的较新版本。有效的解决方案是从源头构建 php
瓶子。
检查 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
,则必须在从源代码构建之前将其卸载。它也适用于扩展。
正如@jirson-tavera 在 homebrew-php repo issue 中所建议的那样,无需覆盖您的 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
我遇到了同样的问题,唯一有用的是使用 --build-from-source
参数:
brew install php70 --build-from-source
Homebrew php 已更新,不再是 libjpeg 的问题
我分享这个是因为我在使用 PHP5.4 时遇到了同样的问题。最初,我有 PHP5.6,它工作正常。然后我降级到 php5.4 因为我的应用程序只支持 PHP5.4.
然后就出现了这个错误。我注意到我有 libjpeg.9.dylib
和 PHP5.4 正在寻找 libjpeg.8.dylib
。
执行以下操作解决了问题:
brew uninstall php54
brew install --build-from-source php54
正如@lifecom 指出的那样,这已通过自制程序的 php70 更新修复,但如果 brew upgrade
在升级之前尝试更新其他软件包,您可能仍然 运行 遇到问题 php70.
首先用brew upgrade php70
手动更新php70来解决这个问题,然后你应该能够运行 brew upgrade
没问题(或者,好吧,至少没有这个问题)。
尽管接受的答案中的解决方案有效,但这并不是解决问题的正确方法。它违反了 brew 的元数据完整性。
问题
问题是 Homebrew 的 jpeg
公式已升级到 v9,但现有的“瓶装”PHP 公式仍在构建,并且 link 与以前的版本 v8 相比,它不再存在于您的系统中。
您有几个选项可以解决此问题。
1。从源 重新编译 phpxx
公式(强烈推荐)
卸载您的 php 公式,并从源代码重建它,而不是使用瓶装版本。这样,php 将针对当前安装的 jpeg
版本使用 link。假设您正在处理 php71
:
brew reinstall php71 --build-from-source
2。以正确的方式降级 jpeg
公式 (优于手动重新编译)
如果你还没有 运行 brew cleanup
,你已经在你的 brew 地窖里得到了以前的 jpeg
版本,切换到它:
brew switch jpeg 8d
如果出现jpeg does not have a version "8d" in the Cellar.
错误,您需要先通过还原历史来恢复它:
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
并查看提交消息来找出提交哈希值。
缺点是可能有其他公式需要较新版本才能正常工作,例如imagemagick
。如果您遇到此类不兼容问题,请查看上面的第一个解决方案。
3。通过手动重新编译 降级 jpeg
(不推荐)
获取源代码,编译并覆盖 brew 的版本。详见
不推荐这样做,因为它违反了 brew 元数据的完整性。 Brew 认为它有 8b 版本,但是,您手动编译 9b 并覆盖文件。
4。手动 symlink 旧版本 (严重吗?)
不要manually symlink剩下的libjpeg.8.dylib
。如果文件在那里,你可以像上面第二个解决方案中提到的那样 brew switch
到它。
这只是您在这里可以做的最糟糕的黑客攻击。
此类问题最终会fixed。
我在尝试升级时遇到了类似的问题 composer
:
dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
composer: PHP Phar support is required for this formula
Error: An unsatisfied requirement failed this build.
问题是 php
找不到 libjpeg
库了。解决此问题的一种方法是重新安装 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
我也有这个问题。我是这样解决的: 卸载 jpeg/8b:
brew uninstall --ignore-dependencies libjpeg
卸载jpeg/9b:
brew uninstall --ignore-dependencies jpeg
重新安装jpeg/9b
brew install jpeg
以下命令对我有用。
brew switch libjpeg 8d
一个肮脏的解决方案,对我来说工作得很好。
ln -s /usr/local/lib/libjpeg.9.dylib /usr/local/lib/libjpeg.8.dylib
在某些情况下,尤其是在 Catalina 中,程序包的 Homebrew cask 可能存在但未正确链接。在那种情况下尝试:
brew link libjpeg
brew reinstall php --build-from-source