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 응용 프로그램의 대부분은 composer를 제외하고 homebrew를 사용하여 설치되었습니다 (컬을 사용하여 설치됨)

나는 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을 실행 중입니다.

미리 감사드립니다!

답변:


156

다음을 실행하는 것이 좋습니다.

$ brew update && brew upgrade

몇 분 전까지 만해도이 문제가 발생했습니다. 최신 PHP 버전이 있으므로 다음과 같이 해결했습니다.

$ brew reinstall php55

도움이되기를 바랍니다.


고맙습니다. homebrew를 완전히 제거하고 다시 설치했지만 돌이켜 보면 이것이 더 나은 옵션이라고 생각합니다.
user3458861

다른 프로그램 (유예)에서 동일한 문제가 발생하여 해결되었습니다.
mstringer 2014

1
도움이 될 수 있습니다. ImageMagick이이 문제의 원인 일 수 있습니다. 나는 diffmerge하려고했던 / usr / local / bin / compare를 지우는 ImageMagick과 비슷한 문제가있었습니다.
phpguru

나는 $ brew 업그레이드를 할 필요가 없었지만 $ brew 업데이트와 $ brew 재설치 php53이 나를 위해 일했습니다.
Thomas Bennett

경고 : 업그레이드는 모든 (오래된) 공식을 업데이트하며 시간이 걸릴 수 있습니다!
laffuste 2015-06-16

42

나는 위의 내용을 따랐고 (어쨌든 brew를 최신 상태로 유지하는 것은 나쁜 생각이 아닙니다) 여전히 똑같은 문제가 있습니다.

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에 해당하는 위치 찾기


8
Btw, mdfind libpng15.15.dylib로 케이트 해킹이 필요하지 않습니다
Jure C.

감사합니다 @JureC., 나는 mdfind를 몰랐습니다. sudo find / -name libpng15 -print를 사용할 수도 있지만 출력은 약간 상세합니다.
phpguru

D :이 나를 위해 일한 유일한 것은, 덕분에
holmeswatson

이것은 나에게도 효과적이었습니다. 내가 가진 문제는 libpng15가 이제 이전 버전이므로 업데이트가 수정되지 않는다는 것입니다.
bigtunacan

1
이것은 나를 위해 일한 유일한 솔루션입니다! 감사!
JLuiz 2014 년

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는 libpng15가 아닌 libpng16을 계속 설치했기 때문에 위의 작업을 수행해야했습니다.


브루 닥터를 실행할 때 추가 문제가 발생합니다. 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 2016-06-04

8

제 경우에는 libjpeg. 내가해야 할 일은 달리고 brew reinstall libjpeg모든 것이 작동했습니다!


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에 의존하는 패키지를 다시 빌드하는 것이 좋지만 이것은 빠른 붕대 수정으로 작동합니다.


3

이 질문에는 이미 해결책을 제시하는 답변이 있습니다. 하지만 사람들이 문제를 이해할 수 있도록 2 센트를 드리고 싶습니다. 동일한 문제가 발생 하면 특정 질문을 만들었습니다 . 나는 같은 문제가 있지만 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

그러나 이것이 왜 나에게 문제를 해결하지 못하는지 모르겠습니다. 어쩌면 내가 가지고 있기 때문에


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가 현재 실행 중이었지만 php54의 php.ini파일은 여전히로드되었으며 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


1

이 오류로 인해 매우 힘들었습니다.

이유 : 호환되지 않는 라이브러리 버전 : php에는 버전 44.0.0 이상이 필요하지만 libpng16.16.dylib는 버전 42.0.0을 제공합니다. Trace / BPT 트랩 : 6

나는 위의 모든 것을 brew와 훨씬 더 많이했다.하지만 이것은 아니었다!

라이브러리 위치 확인 :

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 사용자이기 때문에 Symfony4가 최소한 7.1.3을 요구하기 때문에 PHP 7.1.0에서 7.1.8 ( 마지막 MAMP php 사용 가능 )으로 업데이트하려고 할 때 오류가 나타났습니다.

결국 나는 MAMP의 새 버전을 설치했고 작동했습니다 (4.1에서 4.2). 그러나이 작업을 수행 할 때주의해야합니다. 먼저 MAMP / htdoc 폴더의 모든 항목을 백업해야합니다. 또한 MAMP / bin / php에있을 수있는 사용자 정의 컴파일 된 PHP 버전의 백업을 유지하십시오. (제 경우에는 Oracle 드라이버가 포함 된 특수 PHP 버전이 있습니다.)

또한 MAMP php 버전을 CLI php 인터프리터로 구성한 경우 .bash_profile에서 PATH를 업데이트해야합니다.

다음과 같이 보일 것입니다.

내보내기 PATH = / Applications / MAMP / bin / php / php7.1.8 / bin : $ PATH

도움이 되었기를 바랍니다.


0

MAMP를 업데이트 한 후이 문제가 발생했으며 새 PHP 버전으로 인해 설정 한 사용자 정의 $ PATH가 잘못되었으므로 잘못된 버전의 PHP가 먼저로드되었으며 오류를 유발 한 PHP 버전이었습니다.

.bash_profile의 경로를 업데이트하면 문제가 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.