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