即使已接受答案中的解决方案有效,但这并不是解决问题的正确方法。它违反了 brew 的元数据完整性。
问题
问题是 Homebrew 的 jpeg 公式已升级到 v9,但现有的“瓶装” PHP 公式仍然构建并与以前的版本 v8 相关联,您的系统上不再存在该版本。
您有几个选项可以解决此问题。
1。从源代码重新编译phpxx 公式(强烈推荐)
卸载您的 php 公式,并从源代码重建它,而不是使用瓶装版本。这样,php 将使用并链接到当前安装的jpeg 版本。假设你正在处理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 的版本。详情请参考Denis' answer。
不建议这样做,因为它违反了 brew 元数据的完整性。 Brew 认为它有 8b 版本,但是您手动编译了 9b 并覆盖了文件。
4。手动符号链接旧版本 (真的吗?)
不要manually symlink 剩下的libjpeg.8.dylib。如果文件在那里,您可以像上面第二个解决方案中提到的那样 brew switch 。
这是你可以在这里做的最糟糕的黑客攻击。
此类问题最终将是fixed。