PHP was not working for me as I was encountering this libpng issue, so I reinstalled a new version with Homebrew.
However, I'm getting a similar error with libjpeg
this time:
$ 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
Any suggestions?
As proposed by @jirson-tavera in the homebrew-php repo issue, this can be fixed without overriding your brew installation:
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
Even though the solution in the accepted answer works, it's not the right way to fix the problem. It violates brew's metadata integrity.
The issue is that Homebrew's jpeg
formula has been upgraded to v9 but the existing "bottled" PHP formula is still built and linked against the previous version, v8, which is no longer exists on your system.
You have a few options to fix the issue.
phpxx
formula from source (highly recommended)
Uninstall your php formula, and rebuild it from the source instead of using the bottled version. This way, php will use and link against the currently installed version of jpeg
. Assuming that you're dealing with php71
:
brew reinstall php71 --build-from-source
jpeg
formula the right way (preferred over recompiling it manually)
If you haven't run brew cleanup
, you already got the previous jpeg
version in your brew's cellar, switch to it:
brew switch jpeg 8d
If you get a jpeg does not have a version "8d" in the Cellar.
error, you need to first restore it by reverting the history:
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
You can find out the commit hash by using brew log jpeg
and going through the commit messages.
The downside is that there might be other formulas that require the newer version to work properly, e.g. imagemagick
. If you face such incompatibility issues, check the first solution above.
jpeg
by manually recompiling (not recommended)
Fetch the source, compile and overwrite brew's version. Refer to Denis' answer for details.
This is not recommended because it violates the integrity of your brew metadata. Brew thinks that it has the 8b version, however, you manually compiled 9b and overwrote the files.
Do not manually symlink the leftover libjpeg.8.dylib
. If the file is there, you can just brew switch
to it as mentioned in the second solution above.
It's just the worst hack you can do here.
Such issues will be eventually fixed.
I encountered the similar problem today. The cause of the problem was a newer version of libjpeg
. And the solution that worked was building php
bottle from source.
Check available version of 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
Install php
from source:
brew install --build-from-source php56
Update:
If you have already installed php
you have to uninstall it prior to building from source. It also applies to extensions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With