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.