この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
助言がありますか?
homebrew-phpリポジトリの問題 で@ jirson-taveraが提案したように、これは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
受け入れられた答えの解決策は機能しますが、問題を解決する正しい方法ではありません。 brewのメタデータの整合性に違反します。
問題は、Homebrewのjpeg
数式がv9にアップグレードされたが、既存の「ボトル入り」PHP数式がまだ構築され、システムに存在しない以前のバージョンv8にリンクされていることです。
問題を修正するためのいくつかのオプションがあります。
phpxx
式を再コンパイルします (強くお勧めします)Php式をアンインストールし、ボトル入りバージョンを使用する代わりにソースから再構築します。このようにして、phpは、現在インストールされているjpeg
のバージョンを使用してリンクします。 php71
を扱っていると仮定すると:
brew reinstall php71 --build-from-source
jpeg
式を正しい方法でダウングレードする (手動で再コンパイルするよりも望ましい)brew cleanup
を実行していない場合は、醸造のセラーで以前の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
。このような非互換性の問題に直面した場合は、上記の最初の解決策を確認してください。
jpeg
をダウングレードします (非推奨)ソースを取得し、brewのバージョンをコンパイルして上書きします。詳細については Denis 'answer を参照してください。
抽出メタデータの整合性に違反するため、これはお勧めしません。 Brewは8bバージョンを持っていると考えていますが、9bを手動でコンパイルし、ファイルを上書きしました。
手動でシンボリックリンク 残ったlibjpeg.8.dylib
をしないでください。ファイルがそこにある場合は、上記の2番目のソリューションで述べたように、brew switch
だけを実行できます。
ここでできるのは最悪のハックです。
このような問題は最終的には 修正済み になります。
今日、同様の問題に遭遇しました。問題の原因は、libjpeg
の新しいバージョンでした。そして、解決した解決策は、ソースからphp
bottleを構築することでした。
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
を既にインストールしている場合は、ソースからビルドする前にアンインストールする必要があります。拡張機能にも適用されます。
composer
をアップグレードしようとすると、同様の問題が発生していました。
dyld:ライブラリがロードされていません:/usr/local/opt/jpeg/lib/libjpeg.8.dylib
参照元:/ usr/local/bin/php
理由:画像が見つかりません
composer:PHPこの式にはPharのサポートが必要です
エラー:要件が満たされていないため、このビルドは失敗しました。
問題はphp
がlibjpeg
ライブラリをもう見つけられなかったことでした。これを修正する1つの方法は、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
????
私は同じ問題を抱えていたので、手動で here からlibjpeg tarballをダウンロードして実行することで解決しました:
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
次のコマンドは私のために働いた。
brew switch libjpeg 8d
私はジルソンの答えを試しませんでしたが、私のために働いたのは:
brew uninstall libjpeg
brew install libjpeg
私は同じ問題を抱えていましたが、助けた唯一のことは--build-from-source
パラメータを使用することでした:
brew install php70 --build-from-source
汚い解決策、それは私にとってはうまくいく。
ln -s /usr/local/lib/libjpeg.9.dylib /usr/local/lib/libjpeg.8.dylib
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が指摘しているように、これはhomebrewのphp70アップデートで修正されていますが、brew upgrade
がphp70をアップグレードする前に他のパッケージをアップデートしようとすると、問題が発生する可能性があります。
これを修正するには、最初にbrew upgrade php70
でphp70を手動で更新します。その後、brew upgrade
を問題なく(または、少なくともthis問題なしで)実行できるはずです。
brew switch libjpeg 8d
Valet-php7.1を搭載したMac
Homebrew phpが更新され、libjpegの問題はなくなりました