PHP не работал для меня, поскольку я сталкивался с этой проблемой libpng , поэтому я переустановил новую версию с 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
Какие-либо предложения?
Как было предложено @ jirson-tavera в проблеме homebrew-php repo , это может быть исправлено без переопределения вашей установки:
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
Несмотря на то, что решение в принятом ответе работает, это неправильный способ устранить проблему. Это нарушает целостность метаданных.
Проблема в том, что формула jpeg
Homebrew была обновлена до версии 9, но существующая «разлитая по бутылкам» формула 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 считает, что у него есть версия 8b, однако вы вручную скомпилировали 9b и перезаписали файлы.
Не вручную libjpeg.8.dylib
на оставшуюся libjpeg.8.dylib
. Если файл есть, вы можете просто brew switch
на него, как указано во втором решении выше.
Это просто худший взлом.
В конечном итоге проблема будет устранена .
Сегодня я столкнулся с подобной проблемой. Причиной проблемы стала более новая версия 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
вам необходимо удалить его до создания из источника. Это также относится к расширениям.
У меня была такая же проблема, и я решил ее, загрузив 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
Я не пробовал ответить Джирсону, но то, что сработало для меня, было:
brew uninstall libjpeg brew install libjpeg
У меня возникла аналогичная проблема с попыткой обновить composer
:
dyld: библиотека не загружена: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
Ссылка из: / usr / local / bin / php
Причина: изображение не найдено
композитор: для этой формулы требуется поддержка PHP Phar
Ошибка: неудовлетворенное требование не удалось выполнить эту сборку.
Проблема заключалась в том, что 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
🍻
У меня была такая же проблема, и единственное, что помогло, это использовать параметр --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
.
Выполнение следующей задачи:
brew uninstall php54 brew install --build-from-source php54
Homebrew php обновлен и больше не проблема с libjpeg
Как отмечает @lifecom, это исправлено с обновлением php70 от homebrew, но вы все равно можете столкнуться с проблемой, если brew upgrade
производительности пытается обновить другие пакеты до обновления php70.
Исправьте это, вручную обновив php70 сначала с brew upgrade php70
и тогда вы должны будете иметь возможность запускать brew upgrade php70
без проблем (или, ну, по крайней мере, без этой проблемы).
У меня была и эта проблема. Я решил это следующим образом: Удалить jpeg / 8b:
brew uninstall --ignore-dependencies libjpeg
Удаление jpeg / 9b:
brew uninstall --ignore-dependencies jpeg
Установите jpeg / 9b
brew install jpeg