dyld: библиотека не загружена: /usr/local/lib/libpng16.16.dylib со всем, что связано с php

119

Использование любого приложения на PHP приводит к:

dyld: Library not loaded: /usr/local/lib/libpng15.15.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
[1]    4494 trace trap  php

Большинство моих приложений php были установлены с использованием homebrew, за исключением composer (установлен с помощью curl)

Я попытался удалить libpng и переустановить его с помощью homebrew, но безрезультатно.

Затем нужно было переключиться на последнюю версию libpng 1.5, как указано в сообщении об ошибке:

$ brew info libpng
libpng: stable 1.6.10 (bottled) 
http://www.libpng.org/pub/png/libpng.html
/usr/local/Cellar/libpng/1.5.17 (15 files, 1.0M)
Poured from bottle
/usr/local/Cellar/libpng/1.5.18 (15 files, 1.0M)
Poured from bottle
/usr/local/Cellar/libpng/1.6.10 (17 files, 1.3M) *

$ brew switch libpng 1.5.18
Cleaning /usr/local/Cellar/libpng/1.5.17
Cleaning /usr/local/Cellar/libpng/1.5.18
Cleaning /usr/local/Cellar/libpng/1.6.10
16 links created for /usr/local/Cellar/libpng/1.5.18

Теперь ошибка изменилась на:

dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib
Referenced from: /usr/local/lib/libfreetype.6.dylib
Reason: image not found
[1]    6993 trace trap  phpunit

Я использую Mavericks (10.9.2) и PHP 5.5.1.

Заранее спасибо!

user3458861
источник

Ответы:

156

Предлагаю вам запустить:

$ brew update && brew upgrade

Еще пару минут назад у меня тоже была эта проблема. Поскольку у меня есть последняя версия PHP, я решил это с помощью:

$ brew reinstall php55

Надеюсь, это поможет.

Пера Йович
источник
Спасибо, я полностью удалил и переустановил homebrew, но, оглядываясь назад, я думаю, что это был бы лучший вариант.
user3458861
У меня была такая же проблема с другой программой (благодать), и это исправило ее.
mstringer 09
1
Может быть, полезно: возможно, в этом виноват ImageMagick. У меня была аналогичная проблема с ImageMagick, стирающим / usr / local / bin / compare, который я собирался разобрать.
phpguru
Мне не нужно было делать $ brew upgrade, но у меня работали $ brew update и $ brew переустановить php53.
Thomas Bennett
Предупреждение: обновление обновит все ваши (устаревшие) формулы и может занять некоторое время!
laffuste
42

Я следил за приведенным выше (в любом случае, никогда не было плохой идеей идти в ногу с пивом), и у меня все еще была та же проблема:

LAPTOP:folder Username$ php -v
dyld: Library not loaded: /usr/local/lib/libpng15.15.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found
Trace/BPT trap: 5

Потом придумал способ попроще:

Найдите свою версию (-и) libpng на своем компьютере:

# Requires locate & updatedb for mac os x
# See Link [1] 
LAPTOP:folder Username$ locate libpng15.15.dylib
/Applications/GIMP.app/Contents/Resources/lib/libpng15.15.dylib
/usr/X11/lib/libpng15.15.dylib
/usr/local/Cellar/libpng/1.5.14/lib/libpng15.15.dylib

Сделайте символическую ссылку:

LAPTOP:folder Username$ ln -s /usr/local/Cellar/libpng/1.5.14/lib/libpng15.15.dylib /usr/local/lib/libpng15.15.dylib

Попробуй еще раз:

LAPTOP:folder Username$ php -v
PHP 5.3.26 (cli) (built: Aug 25 2013 16:07:23) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

1) Mac OS X эквивалент locate

phpguru
источник
8
Кстати, mdfind libpng15.15.dylibне требует взлома locate
Jure C.
Спасибо @JureC., Я не знал о mdfind. Вы также можете использовать sudo find / -name libpng15 -print, но результат будет немного подробным.
phpguru
это единственное, что у меня сработало, спасибо: D
holmeswatson 05
Это сработало и для меня. Моя проблема заключалась в том, что libpng15 теперь является старой версией, поэтому обновление не исправит.
bigtunacan
1
Это единственное решение, которое у меня сработало! Спасибо!
JLuiz
18

Это потому, что для libpng нет символических ссылок. Вам нужно снова связать libpng.

brew unlink libpng && brew link libpng

И вы можете получить некоторую ошибку. Я исправил эту ошибку, исправив разрешение. Может это из-за неустановленных macports.

sudo chown -R yourid:staff /usr/local/share/man/

Создайте ссылку еще раз, и она будет работать.

Чонхи Парк
источник
На El Capitan я использовал homebrew-php, и это оказалось для меня решением. Помимо приведенной выше ссылки, мне еще пришлось запустить brew link unixodbc. Но моя система владела этим конкретным пакетом.
justinpage
11

Я решил это, скопировав его в отсутствующий каталог:

cp /opt/X11/lib/libpng15.15.dylib /usr/local/lib/libpng15.15.dylib

brew переустановить libpng продолжал устанавливать libpng16, а не libpng15, поэтому я был вынужден сделать то же самое.

user391339
источник
Это вызовет дополнительную проблему при запуске brew doctor. Warning: Unbrewed dylibs were found in /usr/local/lib. If you didn't put them there on purpose they could cause problems when building Homebrew formulae, and may need to be deleted. Unexpected dylibs: /usr/local/lib/libpng15.15.dylib
johnatasjmo
8

В моем случае это было libjpeg. Все, что мне нужно было сделать, это запустить, brew reinstall libjpegи все заработало !

Saada
источник
2
В моем случае это было libpng. brew reinstall libpngрешил это
user34812
4

На всякий случай, если кто-то еще столкнется с этой проблемой, я решил ее следующим

brew update && brew upgrade # installs libpng 1.6

Это вызвало ошибку с другими пакетами, требующими 1.5, с которой они были собраны, поэтому я связал его:

cd /usr/local/lib/
ln -s ../Cellar/libpng/1.5.18/lib/libpng15.15.dylib

Теперь они оба живут в гармонии и бок о бок из-за разных пакетов. Было бы лучше пересобрать пакеты, зависящие от 1.5, но это работает как быстрое исправление ошибок.

Alex
источник
3

Я знаю, что на этот вопрос уже есть ответ, который дает решение. Но я хочу отдать вам свои два цента, чтобы помочь людям разобраться в проблеме. Возникла такая же проблема. Я создал конкретный вопрос. . У меня такая же проблема, но только с PHPStorm. И именно при попытке запустить тест из редактора.

dyld - это динамический компоновщик

Я сею, что dyld искал /usr/local/lib/libpng15.15.dylib, но внутри моего / usr / local / lib / его не было. В этой папке у меня есть libpng16.16.dylib.

Благодаря комментарию я понял, что мой / usr / bin / php был указателем на php 5.5.8. Вместо этого ... / usr / local / bin / php был 5.5.14. PHPStorm работал с / usr / bin / php, конфигурацией по умолчанию. Когда я запускаю php через консоль, я запускаю / urs / local / bin / php.

Итак, ... Если вы получите ошибку dyld, возможно, у вас неправильная конфигурация php. Это причина, потому что

$ brew update && brew upgrade
$ brew reinstall php55

Но я не знаю, почему это не решает для меня проблему. Может потому что у меня

sensorario
источник
1

У меня тоже была эта проблема, и ни одно из решений в этой теме не помогло мне. Как оказалось, проблема заключалась в том, что у меня была эта строка ~/.bash_profile:

alias php="/usr/local/php/bin/php"

И, как оказалось, это /usr/local/phpбыла просто символическая ссылка на /usr/local/Cellar/php54/5.4.24/. Итак, когда я вызвалphp -i я все еще использовал php54. Я просто удалил эту строку из своего профиля на bash, и тогда php заработал.

По какой-то причине, несмотря на то, что теперь php55 был запущен, php.iniфайл с php54 все еще был загружен, и я получал это предупреждение каждый раз, когда запускал php:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php54/5.4.38/lib/php/extensions/no-debug-non-zts-20100525/memcached.so' - dlopen(/usr/local/Cellar/php54/5.4.38/lib/php/extensions/no-debug-non-zts-20100525/memcached.so, 9): image not found in Unknown on line 0

Чтобы исправить это, я просто добавил в свой профиль bash следующую строку:

export PHPRC=/usr/local/etc/php/5.5/php.ini

А дальше все заработало как обычно!

Мэтт Коростофф
источник
1

У меня была эта ошибка, которую не удалось решить brew update && brew upgrade. По какой-то причине мне потребовалось установить его с нуля:

$ brew install libpng

osowskit
источник
1

Мне было очень тяжело с этой ошибкой:

Причина: несовместимая версия библиотеки: для php требуется версия 44.0.0 или новее, но libpng16.16.dylib предоставляет версию 42.0.0 Trace / BPT trap: 6

Я проделал все вышеперечисленное с пивом и многим другим ... но все было не так!

Проверьте, где находится ваша библиотека:

sudo find / -name libpng16.16.dylib

В моем случае это был соответствующий результат:

  • /usr/local/lib/libpng16.16.dylib
  • /usr/local/Cellar/libpng/1.6.34/lib/libpng16.16.dylib
  • /Applications/MAMP/Library/lib/libpng16.16.dylib
  • /opt/X11/lib/libpng16.16.dylib

Поскольку я являюсь пользователем MAMP, оказалось, что ошибка появилась, когда я пытался обновить PHP 7.1.0 до 7.1.8 ( последний доступный MAMP php ), поскольку Symfony4 требует как минимум 7.1.3

В конце я установил новую версию MAMP, и она заработала (с 4.1 по 4.2). Однако будьте осторожны, когда делаете это, вам нужно сначала сделать резервную копию всего в папке MAMP / htdoc. Также сохраните резервную копию вашей скомпилированной версии php, которая может находиться в MAMP / bin / php. (В моем случае у меня была специальная версия PHP с драйверами Oracle).

Также, если вы настроили версию MAMP php в качестве интерпретатора php CLI, вам необходимо обновить PATH в вашем .bash_profile

Это должно выглядеть примерно так:

экспорт PATH = / Applications / MAMP / bin / php / php7.1.8 / bin: $ PATH

Надеюсь, это поможет.

Кайдзоку Гамбаре
источник
0

У меня возникла эта проблема после обновления MAMP, и пользовательский $ PATH, который я установил, был неправильным из-за новой версии php, поэтому сначала была загружена неправильная версия php, и именно эта версия php вызвала ошибку.

Обновление пути в моем .bash_profile устранило мою проблему.

axxxman
источник