Подтвердить что ты не робот

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

Любые предложения?

4b9b3361

Ответ 1

Как было предложено @jirson-tavera в проблемах с репортом homebrew-php, это можно устранить без переопределения вашей установки 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

Ответ 2

Несмотря на то, что решение в принятом ответе работает, это не правильный способ устранить проблему. Он нарушает целостность метаданных brew.

Проблема

Проблема в том, что формула Homebrew jpeg была обновлена ​​до версии v9, но существующая "разлитая по бутылкам" формула PHP по-прежнему построена и связана с предыдущей версией v8, которая больше не существует в вашей системе.

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

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

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

brew reinstall php71 --build-from-source

2. Снизьте jpeg формулу правильного пути (рекомендуется)

Если вы не запустили brew cleanup, вы уже получили предыдущую версию jpeg в своем подвале brew, переключитесь на нее:

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. Подробнее см. В Denis '.

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

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

Не ручная символическая ссылка остатка libjpeg.8.dylib. Если файл есть, вы можете просто brew switch к нему, как указано во втором решении выше.

Это просто худший взлом.


В конечном итоге проблема будет исправлена ​​.

Ответ 3

Сегодня я столкнулся с подобной проблемой. Причиной проблемы стала более новая версия 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, вам необходимо удалить его до создания из источника. Это также относится к расширениям.

Ответ 4

У меня была та же проблема, и я решил ее, загрузив 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

Ответ 5

Я не пробовал ответить Jirson, но то, что сработало для меня, было:

brew uninstall libjpeg
brew install libjpeg

Ответ 6

У меня возникла аналогичная проблема с обновлением 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

🍻

Ответ 7

У меня была такая же проблема, и единственное, что помогло, это использовать параметр --build-from-source:

brew install php70 --build-from-source

Ответ 8

Я делюсь этим, поскольку у меня была такая же проблема при использовании 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

Ответ 9

Homebrew php обновлен и больше не проблема с libjpeg

Ответ 10

Как отмечает @lifecom, это исправлено с обновлением homeprew php70, но вы все равно можете столкнуться с проблемой, если brew upgrade пытается обновить другие пакеты перед обновлением php70.

Исправить это, вручную обновив php70 сначала с помощью brew upgrade php70, и тогда вы должны иметь возможность запускать brew upgrade без проблем (или, ну, по крайней мере, без этой проблемы).

Ответ 11

У меня была и эта проблема. Я решил это так: Удаление jpeg/8b:

brew uninstall --ignore-dependencies libjpeg

Удалить jpeg/9b:

brew uninstall --ignore-dependencies jpeg

Удалить jpeg/8b и 9b

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

brew install jpeg

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