dyld: libreria non caricata: /usr/local/lib/libpng16.16.dylib con qualsiasi cosa relativa a php


119

L'utilizzo di qualsiasi applicazione php produce:

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 maggior parte delle mie applicazioni php sono state installate utilizzando homebrew ad eccezione di composer (installato utilizzando curl)

Ho provato a rimuovere il libpng e reinstallare con homebrew senza alcun risultato.

Successivamente è stato passare alla versione più recente di libpng 1.5 come indicato nel messaggio di errore:

$ 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

Ora l'errore è cambiato 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

Sto eseguendo Mavericks (10.9.2) e PHP 5.5.1.

Grazie in anticipo!

Risposte:


156

Ti suggerisco di correre:

$ brew update && brew upgrade

Fino a un paio di minuti fa anch'io avevo questo problema. Poiché ho una versione PHP aggiornata, l'ho risolta con:

$ brew reinstall php55

Spero che aiuti.


Grazie, ho disinstallato e reinstallato completamente l'homebrew, ma in retrospettiva penso che questa sarebbe stata un'opzione migliore.
user3458861

Ho avuto lo stesso problema con un programma diverso (grace) e questo lo ha risolto.
mstringer

1
Forse utile: è possibile che ImageMagick sia il colpevole di questo. Ho avuto un problema simile con ImageMagick che cancellava / usr / local / bin / compare che avevo intenzione di diffmerge.
phpguru

Non ho dovuto fare $ brew upgrade, ma $ brew update e $ brew reinstall php53 hanno funzionato per me.
Thomas Bennett

Attenzione: l'aggiornamento aggiornerà tutte le tue formule (obsolete) e potrebbe richiedere del tempo!
laffuste

42

Ho seguito quanto sopra (non è mai stata una cattiva idea tenermi aggiornato con la birra comunque) e ho ancora avuto lo stesso identico 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

Quindi ho trovato un modo più semplice:

Cerca le tue versioni di libpng sulla tua scatola:

# 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

Crea un collegamento simbolico:

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

Riprova:

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 di Locate


8
A proposito, mdfind libpng15.15.dylibnon è necessario individuare hack
Jure C.

Grazie @JureC., Non ero a conoscenza di mdfind. Puoi anche usare sudo find / -name libpng15 -print ma l'output è un po 'prolisso.
phpguru

questa è l'unica cosa che ha funzionato per me, grazie: D
holmeswatson

Questo ha funzionato anche per me. Il problema che ho avuto è che libpng15 è ora una vecchia versione, quindi un aggiornamento non sarebbe stato risolto.
bigtunacan

1
Questa è l'unica soluzione che ha funzionato per me! Grazie!
JLuiz

18

È perché non ci sono collegamenti simbolici per libpng. Devi collegare nuovamente libpng.

brew unlink libpng && brew link libpng

E potresti ricevere qualche errore. Ho corretto quell'errore correggendo il permesso. Forse è a causa di macports disinstallati.

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

Crea di nuovo il collegamento e funzionerà.


Su El Capitan, usando homebrew-php, e questa è finita per essere una soluzione per me. Oltre al collegamento sopra, dovevo anche correre brew link unixodbc. Ma il mio sistema aveva la proprietà di quel particolare pacchetto.
justinpage

11

L'ho risolto copiandolo nella directory mancante:

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

brew reinstall libpng ha continuato a installare libpng16, non libpng15, quindi sono stato costretto a fare quanto sopra.


Ciò causerà un ulteriore problema durante l'esecuzione del 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

Nel mio caso lo era libjpeg. Tutto quello che dovevo fare era correre brew reinstall libjpege tutto funzionava!


2
Nel mio caso lo era libpng. brew reinstall libpngrisolto
user34812

4

Nel caso in cui qualcun altro si imbattesse in questo problema, l'ho risolto come segue

brew update && brew upgrade # installs libpng 1.6

Ciò ha causato un errore con altri pacchetti che richiedono 1.5 con cui erano stati compilati, quindi l'ho collegato:

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

Ora vivono entrambi in armonia e fianco a fianco per i diversi pacchetti. Sarebbe meglio ricostruire i pacchetti che dipendono dalla 1.5, ma questo funziona come una rapida correzione del bendaggio.


3

So che questa domanda ha già una risposta che dà una soluzione. Ma voglio darti i miei due centesimi per aiutare le persone a capire il problema. Ottenendo lo stesso problema ho creato una domanda specifica . Ho lo stesso problema, ma solo con PHPStorm. Ed esattamente quando provo a eseguire test dall'editor.

dyld è il linker dinamico

Ho seminato che dyld stava cercando /usr/local/lib/libpng15.15.dylib ma all'interno del mio / usr / local / lib / non c'era. In quella cartella, ho libpng16.16.dylib.

Grazie a un commento, ho capito che il mio / usr / bin / php era un puntatore a php 5.5.8. Invece, ... / usr / local / bin / php era 5.5.14. PHPStorm ha lavorato con / usr / bin / php che è la configurazione predefinita. Quando eseguo php tramite console, eseguo / urs / local / bin / php.

Quindi, ... Se ottieni qualche errore dyld, forse hai una configurazione php sbagliata. Questo è il motivo perché

$ brew update && brew upgrade
$ brew reinstall php55

Ma non so perché questo non mi risolva il problema. Forse perché l'ho fatto


1

Ho anche avuto questo problema e nessuna delle soluzioni in questo thread ha funzionato per me. A quanto pare, il problema era che avevo questa riga in ~/.bash_profile:

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

E, a quanto pare, /usr/local/phpera solo un collegamento simbolico a /usr/local/Cellar/php54/5.4.24/. Quindi, quando ho invocato php -istavo ancora invocando php54. Ho appena cancellato questa riga dal mio profilo bash, e poi php ha funzionato.

Per qualche motivo, anche se php55 era in esecuzione, il file php.ini file da php54 era ancora caricato e ricevevo questo avviso ogni volta che richiamavo 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

Per risolvere questo problema, ho appena aggiunto la seguente riga al mio profilo bash:

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

E poi tutto ha funzionato normalmente!


1

Ho riscontrato questo errore che non è stato risolto da brew update && brew upgrade. Per qualche motivo avevo bisogno di installarlo da zero:

$ brew install libpng


1

Ho avuto molto difficoltà con questo errore:

Motivo: versione libreria non compatibile: php richiede la versione 44.0.0 o successiva, ma libpng16.16.dylib fornisce la versione 42.0.0 Trace / BPT trap: 6

Ho fatto tutte le cose di cui sopra con la birra e molto altro ... ma non era questo!

Controlla dove si trova la tua libreria:

sudo trova / -name libpng16.16.dylib

Nel mio caso ecco il risultato rilevante:

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

Quindi, poiché sono un utente MAMP, si è scoperto che l'errore è apparso mentre stavo tentando di aggiornare da PHP 7.1.0 a 7.1.8 ( ultimo php MAMP disponibile ) poiché Symfony4 richiede almeno 7.1.3

Alla fine ho installato la nuova versione di MAMP e ha funzionato (dalla 4.1 alla 4.2). Tuttavia, fai attenzione quando lo fai, devi prima eseguire il backup di tutto nella tua cartella MAMP / htdoc. Conserva anche un backup della tua versione php compilata personalizzata che può vivere in MAMP / bin / php. (Nel mio caso avevo una versione PHP speciale con driver Oracle).

Inoltre, se hai configurato la versione php MAMP per essere il tuo interprete php CLI, dovrai aggiornare il PATH nel tuo .bash_profile

Dovrebbe assomigliare a qualcosa di simile a questo :

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

Spero che questo possa aiutare.


0

Ho riscontrato questo problema dopo aver aggiornato MAMP e il $ PATH personalizzato che avevo impostato era sbagliato a causa della nuova versione di php, quindi è stata caricata prima la versione sbagliata di php ed è stata quella versione di php che ha generato l'errore.

L'aggiornamento del percorso nel mio .bash_profile ha risolto il mio problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.