dyld: Bibliothek nicht geladen: /usr/local/lib/libpng16.16.dylib mit allem, was mit PHP zu tun hat

119

Die Verwendung einer PHP-Anwendung führt zu:

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

Die meisten meiner PHP-Anwendungen wurden mit Homebrew installiert, mit Ausnahme von Composer (installiert mit Curl).

Ich habe erfolglos versucht, das libpng zu entfernen und mit homebrew neu zu installieren.

Als nächstes musste auf die neueste Version von libpng 1.5 umgeschaltet werden, wie in der Fehlermeldung angegeben:

$ 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

Jetzt hat sich der Fehler geändert in:

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

Ich verwende Mavericks (10.9.2) und PHP 5.5.1.

Danke im Voraus!

user3458861
quelle

Antworten:

156

Ich schlage vor, Sie laufen:

$ brew update && brew upgrade

Bis vor ein paar Minuten hatte ich auch dieses Problem. Da ich eine aktuelle PHP-Version habe, habe ich sie gelöst mit:

$ brew reinstall php55

Hoffentlich hilft das.

Pera Jovic
quelle
Vielen Dank, ich habe Homebrew vollständig deinstalliert und neu installiert, aber im Nachhinein denke ich, dass dies eine bessere Option gewesen wäre.
user3458861
Ich hatte das gleiche Problem mit einem anderen Programm (Gnade) und dies hat es behoben.
Mstringer
1
Vielleicht hilfreich: Möglicherweise ist ImageMagick der Schuldige dafür. Ich hatte ein ähnliches Problem mit ImageMagick, das / usr / local / bin / compare auslöschte, das ich diffundieren wollte.
Phpguru
Ich musste kein $ Brew-Upgrade durchführen - aber $ Brew-Update und $ Brew-Neuinstallation von php53 funktionierten für mich.
Thomas Bennett
Warnung: Das Upgrade aktualisiert alle Ihre (veralteten) Formeln und kann eine Weile dauern!
Laffuste
42

Ich folgte dem oben Gesagten (nie eine schlechte Idee, um sowieso mit dem Brauen auf dem Laufenden zu bleiben) und hatte immer noch genau das gleiche 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

Dann fand man einen einfacheren Weg:

Suchen Sie auf Ihrer Box nach Ihren libpng-Versionen:

# 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

Machen Sie einen Symlink:

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

Versuch es noch einmal:

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 entspricht der Lokalisierung

Phpguru
quelle
8
Übrigens, mdfind libpng15.15.dyliberfordert keinen Lokalisierungs-Hack
Jure C.
Danke @JureC., Mir war mdfind nicht bekannt. Sie können auch sudo find / -name libpng15 -print verwenden, aber die Ausgabe ist ein bisschen ausführlich.
Phpguru
Dies ist das einzige, was für mich funktioniert hat, danke: D
Holmeswatson
Das hat auch bei mir funktioniert. Das Problem, das ich hatte, ist, dass libpng15 jetzt eine alte Version ist, sodass ein Update nicht behoben werden kann.
Bigtunacan
1
Dies ist die einzige Lösung, die für mich funktioniert hat! Vielen Dank!
JLuiz
18

Es liegt daran, dass es keine Symlinks für libpng gibt. Sie müssen libpng erneut verknüpfen.

brew unlink libpng && brew link libpng

Und Sie können einen Fehler bekommen. Ich habe diesen Fehler durch Korrigieren der Berechtigung behoben. Vielleicht liegt es an deinstallierten Macports.

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

Erstellen Sie den Link erneut und es wird funktionieren.

Jonghee Park
quelle
Auf El Capitan mit Homebrew-PHP, und dies war eine Lösung für mich. Zusätzlich zu der obigen Verknüpfung musste ich auch laufen brew link unixodbc. Aber mein System hatte das Eigentum an diesem bestimmten Paket.
justinpage
11

Ich habe dies gelöst, indem ich es in das fehlende Verzeichnis kopiert habe:

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

Die Neuinstallation von Brew libpng installierte weiterhin libpng16, nicht libpng15, so dass ich gezwungen war, die oben genannten Schritte auszuführen.

user391339
quelle
Dies führt zu einem zusätzlichen Problem beim Ausführen von 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

In meinem Fall war es libjpeg. Alles was ich tun musste war rennen brew reinstall libjpegund alles hat einfach funktioniert!

Saada
quelle
2
In meinem Fall war es libpng. brew reinstall libpnglöste es
user34812
4

Nur für den Fall, dass jemand anderes auf dieses Problem stößt, habe ich es wie folgt gelöst

brew update && brew upgrade # installs libpng 1.6

Dies verursachte einen Fehler bei anderen Paketen, für die 1.5 erforderlich war und mit denen sie erstellt wurden. Deshalb habe ich ihn verknüpft:

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

Jetzt leben beide in Harmonie und Seite an Seite für die verschiedenen Pakete. Es wäre besser, die Pakete, die von 1.5 abhängen, neu zu erstellen, aber dies funktioniert als schnelle Bandagenkorrektur.

Alex
quelle
3

Ich weiß, dass diese Frage bereits eine Antwort hat, die eine Lösung gibt. Aber ich möchte Ihnen meine zwei Cent geben, damit die Leute das Problem besser verstehen. Ich habe eine bestimmte Frage erstellt . Ich habe das gleiche Problem, aber nur mit PHPStorm. Und genau dann, wenn ich versuche, den Test über den Editor auszuführen.

dyld ist der dynamische Linker

Ich säe, dass dyld nach /usr/local/lib/libpng15.15.dylib gesucht hat, aber in meiner / usr / local / lib / gab es keine. In diesem Ordner habe ich libpng16.16.dylib.

Dank eines Kommentars verstehe ich, dass mein / usr / bin / php ein Zeiger auf PHP 5.5.8 war. Stattdessen war ... / usr / local / bin / php 5.5.14. PHPStorm arbeitete mit / usr / bin / php, der Standardkonfiguration. Wenn ich PHP über die Konsole ausführe, führe ich / urs / local / bin / php aus.

Also, ... Wenn Sie einen Dyld-Fehler erhalten, haben Sie möglicherweise eine falsche PHP-Konfiguration. Das ist der Grund dafür

$ brew update && brew upgrade
$ brew reinstall php55

Aber ich weiß nicht, warum dies das Problem für mich nicht löst. Vielleicht weil ich habe

Sensorario
quelle
1

Ich hatte auch dieses Problem und keine der Lösungen in diesem Thread funktionierte für mich. Wie sich herausstellte, war das Problem, dass ich diese Zeile hatte in ~/.bash_profile:

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

Und wie sich herausstellte, /usr/local/phpwar es nur ein Symlink zu /usr/local/Cellar/php54/5.4.24/. Als ich php -iaufrief, rief ich immer noch php54 auf. Ich habe diese Zeile gerade aus meinem Bash-Profil gelöscht und dann hat PHP funktioniert.

Aus irgendeinem Grund wurde die php.iniDatei von php54 immer noch geladen, obwohl php55 jetzt ausgeführt wurde , und ich erhielt diese Warnung jedes Mal, wenn ich php aufrief:

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

Um dies zu beheben, habe ich meinem Bash-Profil gerade die folgende Zeile hinzugefügt:

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

Und dann hat alles wie gewohnt funktioniert!

Matt Korostoff
quelle
1

Ich hatte diesen Fehler, der nicht von gelöst wurde brew update && brew upgrade. Aus irgendeinem Grund musste ich es von Grund auf neu installieren:

$ brew install libpng

osowskit
quelle
1

Ich hatte es sehr schwer mit diesem Fehler:

Grund: Inkompatible Bibliotheksversion: PHP erfordert Version 44.0.0 oder höher, aber libpng16.16.dylib bietet Version 42.0.0 Trace / BPT-Trap: 6

Ich habe all die oben genannten Dinge mit Gebräu und vielem mehr gemacht ... aber das war es nicht!

Überprüfen Sie, wo sich Ihre Bibliothek befindet:

sudo find / -name libpng16.16.dylib

In meinem Fall war hier das relevante Ergebnis:

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

Als MAMP-Benutzer stellte sich heraus, dass der Fehler auftrat, als ich versuchte, von PHP 7.1.0 auf 7.1.8 zu aktualisieren ( letzte verfügbare MAMP-PHP) ) zu aktualisieren, da Symfony4 mindestens 7.1.3 erfordert

Am Ende habe ich die neue Version von MAMP installiert und es hat funktioniert (4.1 bis 4.2). Seien Sie jedoch vorsichtig, wenn Sie dies tun. Sie müssen zuerst alles in Ihrem MAMP / htdoc-Ordner sichern. Führen Sie auch ein Backup Ihrer benutzerdefinierten kompilierten PHP-Version, die in MAMP / bin / PHP gespeichert werden kann. (In meinem Fall hatte ich eine spezielle PHP-Version mit Oracle-Treibern).

Wenn Sie die MAMP-PHP-Version als Ihren CLI-PHP-Interpreter konfiguriert haben, müssen Sie den PATH in Ihrem .bash_profile aktualisieren

Es sollte ungefähr so ​​aussehen:

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

Ich hoffe das kann helfen.

Kaizoku Gambare
quelle
0

Ich habe dieses Problem nach dem Aktualisieren von MAMP erhalten, und der benutzerdefinierte $ PATH, den ich festgelegt hatte, war aufgrund der neuen PHP-Version falsch. Daher wurde zuerst die falsche PHP-Version geladen, und es war diese PHP-Version, die den Fehler auslöste.

Das Aktualisieren des Pfads in meinem .bash_profile hat mein Problem behoben.

Axxxman
quelle