dyld: Biblioteka nie została załadowana: /usr/local/lib/libpng16.16.dylib z czymkolwiek związanym z php


119

Użycie dowolnej aplikacji php skutkuje:

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

Większość moich aplikacji php została zainstalowana przy użyciu homebrew, z wyjątkiem kompozytora (instalowanego przy użyciu curl)

Próbowałem usunąć libpng i ponownie zainstalować za pomocą homebrew bezskutecznie.

Następnie należy przejść do najnowszej wersji libpng 1.5, jak podano w komunikacie o błędzie:

$ 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

Teraz błąd zmienił się na:

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

Używam Mavericks (10.9.2) i PHP 5.5.1.

Z góry dziękuję!

Odpowiedzi:


156

Proponuję biegać:

$ brew update && brew upgrade

Jeszcze kilka minut temu miałem ten problem. Ponieważ mam aktualną wersję PHP, rozwiązałem to za pomocą:

$ brew reinstall php55

Mam nadzieję, że to pomoże.


Dziękuję, całkowicie odinstalowałem i ponownie zainstalowałem homebrew, ale z perspektywy czasu myślę, że to byłaby lepsza opcja.
user3458861

Miałem ten sam problem z innym programem (łaską) i to go naprawiło.
mstringer

1
Może pomocne: Możliwe, że winowajcą jest ImageMagick. Miałem podobny problem z zatarciem / usr / local / bin / compare przez ImageMagicka, który miałem zamiar się rozróżnić.
phpguru

Nie musiałem robić aktualizacji $ brew - ale aktualizacja $ brew i ponowna instalacja php53 $ brew działały dla mnie.
Thomas Bennett

Ostrzeżenie: aktualizacja zaktualizuje wszystkie (nieaktualne) formuły i może chwilę potrwać!
laffuste

42

Postępowałem zgodnie z powyższym (i tak nigdy nie jest to zły pomysł, aby być na bieżąco z naparami) i nadal miałem ten sam dokładny problem:

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

Potem wymyśliłem prostszy sposób:

Wyszukaj wersje libpng na swoim pudełku:

# 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

Utwórz łącze symboliczne:

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

Spróbuj ponownie:

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) Odpowiednik locate w systemie Mac OS X


8
Przy okazji, mdfind libpng15.15.dylibnie wymaga zlokalizowania hacka
Jure C.

Dzięki @ JureC., Nie byłem świadomy mdfind. Możesz również użyć sudo find / -name libpng15 -print, ale wynik jest odrobinę rozwlekły.
phpguru

to jedyna rzecz, która działała dla mnie, dzięki: D
holmeswatson

U mnie to też zadziałało. Problem, który miałem, polegał na tym, że libpng15 jest teraz starą wersją, więc aktualizacja nie została naprawiona.
bigtunacan

1
To jedyne rozwiązanie, które u mnie zadziałało! Dzięki!
JLuiz

18

Dzieje się tak, ponieważ nie ma dowiązań symbolicznych do libpng. Musisz ponownie połączyć libpng.

brew unlink libpng && brew link libpng

Możesz otrzymać błąd. Naprawiłem ten błąd, poprawiając uprawnienia. Może to z powodu odinstalowanych macportów.

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

Utwórz link ponownie i zadziała.


Na El Capitan, używając homebrew-php, i to okazało się dla mnie rozwiązaniem. Oprócz powyższego linkowania musiałem też biec brew link unixodbc. Ale mój system był właścicielem tego konkretnego pakietu.
justinpage

11

Rozwiązałem to, kopiując go do brakującego katalogu:

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

brew reinstalacja libpng kontynuował instalację libpng16, a nie libpng15, więc byłem zmuszony zrobić powyższe.


Spowoduje to dodatkowy problem podczas uruchamiania 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

W moim przypadku tak było libjpeg. Wszystko, co musiałem zrobić, to uruchomić brew reinstall libjpegi wszystko po prostu działało!


2
W moim przypadku tak było libpng. brew reinstall libpngrozwiązałem to
user34812

4

Na wypadek, gdyby ktoś inny napotkał ten problem, rozwiązałem go w następujący sposób

brew update && brew upgrade # installs libpng 1.6

Spowodowało to błąd z innymi pakietami wymagającymi 1.5, z którymi zostały zbudowane, więc połączyłem to:

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

Teraz oboje żyją w harmonii i ramię w ramię dla różnych pakietów. Lepiej byłoby odbudować pakiety zależne od 1.5, ale działa to jako szybka naprawa bandaży.


3

Wiem, że to pytanie ma już odpowiedź, która daje rozwiązanie. Ale chcę ci dać moje dwa centy, aby pomóc ludziom zrozumieć problem. Otrzymując ten sam problem, stworzyłem konkretne pytanie . Mam ten sam problem, ale tylko z PHPStorm. I dokładnie wtedy, gdy próbuję uruchomić test z edytora.

dyld jest dynamicznym konsolidatorem

Zasiałem, że dyld szukał /usr/local/lib/libpng15.15.dylib, ale w moim / usr / local / lib / nie było. W tym folderze znalazłem libpng16.16.dylib.

Dzięki komentarzowi rozumiem, że mój / usr / bin / php był wskaźnikiem do php 5.5.8. Zamiast tego ... / usr / local / bin / php było 5.5.14. PHPStorm współpracował z / usr / bin / php, który jest domyślną konfiguracją. Kiedy uruchamiam php przez konsolę, uruchamiam / urs / local / bin / php.

Więc ... Jeśli pojawi się jakiś błąd dyld, być może masz niewłaściwą konfigurację php. To jest powód, ponieważ

$ brew update && brew upgrade
$ brew reinstall php55

Ale nie wiem, dlaczego to nie rozwiązuje problemu. Może dlatego, że tak


1

Ja też miałem ten problem i żadne z rozwiązań w tym wątku mi nie pomogło. Jak się okazuje, problem polegał na tym, że miałem taką linię w ~/.bash_profile:

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

Okazuje się, że /usr/local/phpbył to tylko link symboliczny do /usr/local/Cellar/php54/5.4.24/. Więc kiedy php -iwywołałem, nadal wywoływałem php54. Właśnie usunąłem tę linię z mojego profilu bash, a następnie php działał.

Z jakiegoś powodu, mimo że php55 było teraz uruchomione, php.iniplik z php54 był nadal załadowany i otrzymywałem to ostrzeżenie za każdym razem, gdy wywoływałem 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

Aby to naprawić, właśnie dodałem następujący wiersz do mojego profilu bash:

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

A potem wszystko działało normalnie!


1

Miałem ten błąd, który nie został rozwiązany przez brew update && brew upgrade. Z jakiegoś powodu musiałem zainstalować go od zera:

$ brew install libpng


1

Miałem bardzo ciężko z tym błędem:

Powód: Niezgodna wersja biblioteki: php wymaga wersji 44.0.0 lub nowszej, ale libpng16.16.dylib udostępnia wersję 42.0.0 Trace / BPT trap: 6

Wszystkie powyższe rzeczy zrobiłem z naparem i wiele więcej ... ale to nie było to!

Sprawdź, gdzie jest Twoja biblioteka:

sudo find / -name libpng16.16.dylib

W moim przypadku tutaj był odpowiedni wynik:

  • /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

Ponieważ jestem użytkownikiem MAMP, okazało się, że błąd pojawił się podczas próby aktualizacji z PHP 7.1.0 do 7.1.8 ( ostatnie dostępne php MAMP), ponieważ Symfony4 wymaga co najmniej 7.1.3

Na koniec zainstalowałem nową wersję MAMP i zadziałało (4.1 do 4.2). Jednak zachowaj ostrożność, gdy to robisz, musisz najpierw wykonać kopię zapasową wszystkiego w folderze MAMP / htdoc. Zachowaj również kopię zapasową własnej skompilowanej wersji php, która może znajdować się w MAMP / bin / php. (W moim przypadku miałem specjalną wersję PHP ze sterownikami Oracle).

Również jeśli skonfigurowałeś wersję MAMP php jako interpreter CLI php, musisz zaktualizować PATH w swoim .bash_profile

Powinien wyglądać mniej więcej tak:

export PATH = / Applications / MAMP / bin / php / php7.1.8 / bin: $ PATH

Mam nadzieję, że to pomoże.


0

Mam ten problem po aktualizacji MAMP, a niestandardowa ścieżka $ PATH, którą ustawiłem, była błędna z powodu nowej wersji php, więc najpierw została załadowana niewłaściwa wersja php i to ta wersja php wywołała błąd.

Aktualizacja ścieżki w moim .bash_profile rozwiązała mój problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.