dyld: библиотека не загружена: /usr/local/lib/libjpeg.8.dylib – homebrew php

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 

Какие-либо предложения?

Solutions Collecting From Web of "dyld: библиотека не загружена: /usr/local/lib/libjpeg.8.dylib – homebrew php"

Как было предложено @ 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, которая больше не существует в вашей системе.

У вас есть несколько вариантов решения проблемы.

1. Перекомпилируйте формулу phpxx из источника (настоятельно рекомендуется)

Удалите вашу php-формулу и перестройте ее из источника вместо использования в бутылковой версии. Таким образом, php будет использовать и связываться с текущей установленной версией jpeg . Предполагая, что вы имеете дело с php71 :

 brew reinstall php71 --build-from-source 

2. Сдвиньте формулу 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 . Если вы столкнулись с такими проблемами несовместимости, проверьте первое решение выше.

3. Сдвинуть jpeg путем перекомпиляции вручную (не рекомендуется)

Извлеките исходный код, скомпилируйте и перезапишите версию пива. Для получения дополнительной информации см. Ответ Дениса .

Это не рекомендуется, поскольку это нарушает целостность метаданных вашего пива. Brew считает, что у него есть версия 8b, однако вы вручную скомпилировали 9b и перезаписали файлы.

4. Вручную ссылайтесь на старую версию (не рекомендуется)

Не вручную 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 / 8b и 9b

Установите jpeg / 9b

 brew install jpeg 

Переустановить jpeg / 9b