dyld: Biblioteca não carregada: /usr/local/lib/libpng16.16.dylib com qualquer coisa relacionada ao php

119

Usar qualquer aplicativo php resulta em:

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

A maioria dos meus aplicativos php foram instalados usando homebrew com exceção do composer (instalado usando curl)

Tentei remover o libpng e reinstalar com o homebrew sem sucesso.

Em seguida, foi necessário mudar para a versão mais recente da libpng 1.5, conforme indicado na mensagem de erro:

$ 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

Agora o erro mudou para:

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

Estou executando o Mavericks (10.9.2) e o PHP 5.5.1.

Desde já, obrigado!

user3458861
fonte

Respostas:

156

Eu sugiro que você execute:

$ brew update && brew upgrade

Até alguns minutos atrás, eu também tive esse problema. Como tenho uma versão do PHP atualizada, resolvi com:

$ brew reinstall php55

Espero que ajude.

Pera Jovic
fonte
Obrigado, desinstalei e reinstalei o homebrew completamente, mas, retrospectivamente, acho que essa teria sido uma opção melhor.
user3458861
Eu tive o mesmo problema com um programa diferente (graça) e isso corrigiu.
mstringer de
1
Talvez útil: é possível que o ImageMagick seja o culpado por isso. Eu tive um problema semelhante com ImageMagick obliterando / usr / local / bin / compare que eu tinha que fazer diffmerge.
phpguru
Não precisei fazer o upgrade do $ brew - mas o $ brew update e o $ brew reinstalar php53 funcionaram para mim.
Thomas Bennett
Aviso: a atualização atualizará todas as suas fórmulas (desatualizadas) e pode demorar um pouco!
laffuste
42

Eu segui o acima (nunca é uma má ideia manter-se atualizado com o brew) e ainda tive exatamente o mesmo problema:

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

Então descobri uma maneira mais simples:

Pesquise por sua (s) versão (ões) libpng em sua caixa:

# 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

Faça um link simbólico:

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

Tente novamente:

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 equivalente a localizar

phpguru
fonte
8
Btw, mdfind libpng15.15.dylibnão requer localizar hack
Jure C.
Obrigado @JureC., Não conhecia o mdfind. Você também pode usar sudo find / -name libpng15 -print, mas a saída é um pouco prolixa.
phpguru
esta é a única coisa que funcionou para mim, obrigado: D
holmeswatson
Isso funcionou para mim também. O problema que tive é que libpng15 agora é uma versão antiga, portanto, uma atualização não seria corrigida.
bigtunacan
1
Esta é a única solução que funcionou para mim! Obrigado!
JLuiz
18

É porque não há links simbólicos para libpng. Você precisa vincular libpng novamente.

brew unlink libpng && brew link libpng

E você pode obter algum erro. Corrigi esse erro corrigindo a permissão. Talvez seja por causa de macports desinstalados.

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

Crie o link novamente e funcionará.

Jonghee Park
fonte
No El Capitan, usando homebrew-php, e isso acabou sendo uma solução para mim. Além do link acima, eu também tive que executar brew link unixodbc. Mas meu sistema era proprietário desse pacote específico.
justinpage
11

Resolvi isso copiando-o para o diretório ausente:

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

brew reinstalar libpng continuou instalando libpng16, não libpng15, então fui forçado a fazer o acima.

user391339
fonte
Isso causará um problema adicional ao executar o médico cervejeiro. 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

No meu caso foi libjpeg. Tudo que eu tive que fazer foi correr brew reinstall libjpege tudo funcionou!

Saada
fonte
2
No meu caso foi libpng. brew reinstall libpngresolveu
user34812,
4

No caso de outra pessoa ter esse problema, resolvi da seguinte maneira

brew update && brew upgrade # installs libpng 1.6

Isso causou um erro com outros pacotes que requerem 1.5 com o qual foram construídos, então eu vinculei:

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

Agora ambos vivem em harmonia e lado a lado nas diferentes embalagens. Seria melhor reconstruir os pacotes que dependem do 1.5, mas isso funciona como uma correção rápida do curativo.

Alex
fonte
3

Eu sei que essa questão já tem uma resposta que dá uma solução. Mas quero dar a vocês meus dois centavos para ajudar as pessoas a entender o problema. Obtendo o mesmo problema, criei uma pergunta específica . Eu tenho o mesmo problema, mas apenas com o PHPStorm. E exatamente quando tento executar o teste do editor.

dyld é o vinculador dinâmico

Eu semeava que o dyld estava procurando por /usr/local/lib/libpng15.15.dylib, mas dentro de meu / usr / local / lib / não havia. Nessa pasta, obtive libpng16.16.dylib.

Graças a um comentário, eu entendo que meu / usr / bin / php era um indicador para o php 5.5.8. Em vez disso, ... / usr / local / bin / php era 5.5.14. PHPStorm funcionou com / usr / bin / php que é a configuração padrão. Quando executo o php via console, executo / urs / local / bin / php.

Então, ... Se você receber algum erro dyld, talvez você tenha alguma configuração de php errada. Essa é a razão porque

$ brew update && brew upgrade
$ brew reinstall php55

Mas não sei por que isso não resolve o problema para mim. Talvez porque eu tenho

sensorario
fonte
1

Eu também tive esse problema, e nenhuma das soluções neste tópico funcionou para mim. Acontece que o problema era que eu tinha essa linha em ~/.bash_profile:

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

E, ao que parece, /usr/local/phpera apenas um link simbólico para /usr/local/Cellar/php54/5.4.24/. Então, quando invoquei php -i, ainda estava invocando php54. Acabei de deletar essa linha do meu perfil do bash e o php funcionou.

Por alguma razão, embora o php55 agora estivesse em execução, o php.iniarquivo do php54 ainda estava carregado e eu recebia este aviso sempre que invocava o 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

Para corrigir isso, acabei de adicionar a seguinte linha ao meu perfil bash:

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

E então tudo funcionou normalmente!

Matt Korostoff
fonte
1

Tive esse erro que não foi resolvido pelo brew update && brew upgrade. Por algum motivo, precisei instalá-lo do zero:

$ brew install libpng

Osowskit
fonte
1

Tive muita dificuldade com este erro:

Razão: Versão da biblioteca incompatível: php requer versão 44.0.0 ou posterior, mas libpng16.16.dylib fornece versão 42.0.0 Trace / BPT trap: 6

Eu fiz todas as coisas acima com cerveja e muito mais ... mas não foi isso!

Verifique onde está sua biblioteca:

sudo find / -name libpng16.16.dylib

No meu caso, aqui estava o resultado relevante:

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

Então, como sou um usuário MAMP, descobri que o erro apareceu enquanto eu tentava atualizar do PHP 7.1.0 para 7.1.8 ( último MAMP php disponível ), pois Symfony4 requer pelo menos 7.1.3

No final instalei a nova versão do MAMP e funcionou (4.1 a 4.2). No entanto, seja cuidadoso ao fazer isso, você precisa primeiro fazer backup de tudo em sua pasta MAMP / htdoc. Além disso, mantenha um backup de sua versão de php compilada personalizada que pode estar em MAMP / bin / php. (No meu caso, eu tinha uma versão especial do PHP com drivers Oracle).

Além disso, se você configurou a versão MAMP php para ser seu interpretador CLI php, você precisará atualizar o PATH em seu .bash_profile

Deve ser parecido com isto:

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

Espero que isso possa ajudar.

Kaizoku Gambare
fonte
0

Tive este problema depois de atualizar o MAMP, e o $ PATH personalizado que eu defini estava errado por causa da nova versão do php, então a versão errada do php foi carregada primeiro, e foi essa versão do php que disparou o erro.

Atualizar o caminho em meu .bash_profile corrigiu meu problema.

axxxman
fonte