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!

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.


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


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á.


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.


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!


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.


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


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!


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


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.