dyld: Bibliothèque non chargée: /usr/local/lib/libpng16.16.dylib avec tout ce qui concerne php

119

L'utilisation de n'importe quelle application php entraîne:

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

La plupart de mes applications php ont été installées en utilisant homebrew à l'exception de composer (installé en utilisant curl)

J'ai essayé de supprimer le libpng et de réinstaller avec homebrew en vain.

Ensuite, il fallait passer à la dernière version de libpng 1.5 comme indiqué dans le message d'erreur:

$ 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

Maintenant, l'erreur est devenue:

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

Im exécutant Mavericks (10.9.2) et PHP 5.5.1.

Merci d'avance!

user3458861
la source

Réponses:

156

Je vous suggère de courir:

$ brew update && brew upgrade

Jusqu'à il y a quelques minutes, j'avais aussi ce problème. Parce que j'ai une version PHP à jour, je l'ai résolu avec:

$ brew reinstall php55

J'espère que cela pourra aider.

Pera Jovic
la source
Merci, j'ai complètement désinstallé et réinstallé homebrew, mais rétrospectivement, je pense que cela aurait été une meilleure option.
user3458861
J'ai eu le même problème avec un programme différent (grace) et cela l'a résolu.
mstringer
1
Peut-être utile: il est possible qu'ImageMagick en soit le coupable. J'ai eu un problème similaire avec ImageMagick effaçant / usr / local / bin / compare que je devais différencier.
phpguru
Je n'ai pas eu à faire la mise à jour de $ brew - mais $ brew update et $ brew reinstall php53 ont fonctionné pour moi.
Thomas Bennett
Attention: la mise à jour mettra à jour toutes vos formules (obsolètes) et peut prendre un certain temps!
laffuste
42

J'ai suivi ce qui précède (ce n'est jamais une mauvaise idée de rester à jour avec Brew de toute façon) et j'ai toujours le même problème exact:

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

Ensuite, j'ai trouvé un moyen plus simple:

Recherchez votre (vos) version (s) de libpng sur votre box:

# 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

Créez un lien symbolique:

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

Réessayer:

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) équivalent Mac OS X de Locate

phpguru
la source
8
Btw, mdfind libpng15.15.dylibne nécessite pas de hack de localisation
Jure C.
Merci @JureC., Je n'étais pas au courant de mdfind. Vous pouvez également utiliser sudo find / -name libpng15 -print mais la sortie est un peu verbeuse.
phpguru
c'est la seule chose qui a fonctionné pour moi, merci: D
holmeswatson
Cela a fonctionné pour moi aussi. Le problème que j'ai eu est que libpng15 est maintenant une ancienne version, donc une mise à jour ne résoudrait pas.
bigtunacan
1
C'est la seule solution qui a fonctionné pour moi! Merci!
JLuiz
18

C'est parce qu'il n'y a pas de liens symboliques pour libpng. Vous devez à nouveau lier libpng.

brew unlink libpng && brew link libpng

Et vous pouvez obtenir une erreur. J'ai corrigé cette erreur en corrigeant l'autorisation. C'est peut-être à cause de macports désinstallés.

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

Créez à nouveau le lien et cela fonctionnera.

Parc Jonghee
la source
Sur El Capitan, en utilisant homebrew-php, et cela a fini par être une solution pour moi. En plus du lien ci-dessus, j'ai également dû courir brew link unixodbc. Mais mon système était propriétaire de ce package particulier.
justinpage
11

J'ai résolu ce problème en le copiant dans le répertoire manquant:

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

brew reinstall libpng a continué d'installer libpng16, pas libpng15, donc j'ai été obligé de faire ce qui précède.

user391339
la source
Cela entraînera un problème supplémentaire lors de l'exécution de 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

Dans mon cas, c'était le cas libjpeg. Tout ce que j'avais à faire était de courir brew reinstall libjpeget tout fonctionnait!

saada
la source
2
Dans mon cas, c'était le cas libpng. brew reinstall libpngrésolu
user34812
4

Juste au cas où quelqu'un d'autre rencontrerait ce problème, je l'ai résolu par ce qui suit

brew update && brew upgrade # installs libpng 1.6

Cela a causé une erreur avec d'autres packages nécessitant la version 1.5 avec laquelle ils ont été construits, alors je l'ai lié:

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

Maintenant, ils vivent tous les deux en harmonie et côte à côte pour les différents forfaits. Il serait préférable de reconstruire les paquets qui dépendent de 1.5, mais cela fonctionne comme une solution rapide de bandage.

Alex
la source
3

Je sais que cette question a déjà une réponse qui donne une solution. Mais je veux vous donner mes deux cents pour aider les gens à comprendre le problème. Obtenir le même problème, j'ai créé une question spécifique . J'ai le même problème, mais uniquement avec PHPStorm. Et exactement quand j'essaye d'exécuter le test de l'éditeur.

dyld est l'éditeur de liens dynamique

Je sème que dyld cherchait /usr/local/lib/libpng15.15.dylib mais dans mon / usr / local / lib / il n'y en avait pas. Dans ce dossier, j'ai obtenu libpng16.16.dylib.

Grâce à un commentaire, je comprends que mon / usr / bin / php était un pointeur vers php 5.5.8. Au lieu de cela, ... / usr / local / bin / php était 5.5.14. PHPStorm a fonctionné avec / usr / bin / php qui est la configuration par défaut. Lorsque j'exécute php via la console, j'exécute / urs / local / bin / php.

Donc, ... Si vous obtenez une erreur dyld, peut-être que vous avez une mauvaise configuration php. C'est la raison parce que

$ brew update && brew upgrade
$ brew reinstall php55

Mais je ne sais pas pourquoi cela ne résout pas le problème pour moi. Peut-être parce que j'ai

sensorario
la source
1

J'ai également eu ce problème, et aucune des solutions de ce fil n'a fonctionné pour moi. En fait, le problème était que j'avais cette ligne dans ~/.bash_profile:

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

Et, en fin de compte, /usr/local/phpn'était qu'un lien symbolique vers /usr/local/Cellar/php54/5.4.24/. Alors quand j'ai invoquéphp -i j'appelais toujours php54. Je viens de supprimer cette ligne de mon profil bash, puis php a fonctionné.

Pour une raison quelconque, même si php55 était maintenant en cours d'exécution, le php.inifichier de php54 était toujours chargé, et j'ai reçu cet avertissement à chaque fois que j'appelais 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

Pour résoudre ce problème, je viens d'ajouter la ligne suivante à mon profil bash:

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

Et puis tout a fonctionné comme d'habitude!

Matt Korostoff
la source
1

J'ai eu cette erreur qui n'a pas été résolue par brew update && brew upgrade. Pour une raison quelconque, j'avais besoin de l'installer à partir de zéro:

$ brew install libpng

osowskit
la source
1

J'ai eu beaucoup de mal avec cette erreur:

Raison: Version de la bibliothèque incompatible: php nécessite la version 44.0.0 ou ultérieure, mais libpng16.16.dylib fournit la version 42.0.0 Trace / BPT trap: 6

J'ai fait toutes les choses ci-dessus avec de la bière et bien plus encore ... mais ce n'était pas ça!

Vérifiez où se trouve votre bibliothèque:

sudo find / -name libpng16.16.dylib

Dans mon cas, voici le résultat pertinent:

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

Donc, comme je suis un utilisateur MAMP, il s'avère que l'erreur est apparue pendant que j'essayais de mettre à jour de PHP 7.1.0 à 7.1.8 ( dernier php MAMP disponible ) car Symfony4 nécessite au moins 7.1.3

À la fin, j'ai installé la nouvelle version de MAMP et cela a fonctionné (4.1 à 4.2). Cependant, soyez prudent lorsque vous faites cela, vous devez d'abord sauvegarder tout ce qui se trouve dans votre dossier MAMP / htdoc. Gardez également une sauvegarde de votre version php compilée personnalisée qui peut vivre dans MAMP / bin / php. (Dans mon cas, j'avais une version PHP spéciale avec des pilotes Oracle).

De plus, si vous avez configuré la version php de MAMP pour être votre interpréteur php CLI, vous devrez mettre à jour le PATH dans votre .bash_profile

Ça devrait ressembler a quelque chose comme ca :

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

J'espère que cela peut aider.

Kaizoku Gambare
la source
0

J'ai eu ce problème après la mise à jour de MAMP, et le $ PATH personnalisé que j'avais défini était erroné à cause de la nouvelle version de php, donc la mauvaise version de php a été chargée en premier, et c'est cette version de php qui a déclenché l'erreur.

La mise à jour du chemin dans mon .bash_profile a résolu mon problème.

axxxman
la source