dyld: libreria non caricata: /usr/local/opt/icu4c/lib/libicui18n.62.dylib errore durante l'esecuzione di php dopo l'installazione del nodo con brew su Mac


283

Ho installato il nodo usando homebrew (Mojave), dopo che php ha smesso di funzionare e se provo a eseguire php -vottengo questo errore:

php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found

Ho provato a disinstallare sia node che icu4c ma il problema persiste


Hai installato php anche da Homebrew? Hai provato a reinstallare PHP?
Ortomala Lokni,

1
Per i posteri: disinstallare / reinstallare filato / nodo sembra fare il trucco.
Nathaniel Ford,

12
secondo la mia comprensione, ciò accade quando non si hanno dipendenze di versione. nel mio caso, il comando "brew upgrade" ha risolto i miei problemi. per favore correggimi, se sbaglio in qualche modo.
sh6210,

Risposte:


392

Nota : questo aggiornerà la tua versione di PHP.

Ho appena avuto questo stesso problema. Aggiornare Homebrew e poi ripulire ha funzionato per me. Probabilmente questo errore si è presentato per me a causa di una mancata corrispondenza nelle versioni del pacchetto. Nessuna delle soluzioni precedenti ha risolto il mio errore, ma l'esecuzione dei seguenti comandi homebrew lo ha fatto.

brew upgrade

Attenzione : questo aggiornerà tutti i pacchetti di birra. Se vuoi solo aggiornare pacchetti specifici assicurati di essere specifico.

brew upgrade // for upgrading all packages -- this is the command I used

brew upgrade {package} // for upgrading a specific package

e poi

brew cleanup

40
È stato ... facile
Alan,

7
Penso che questa non sia una buona idea per coloro che hanno un ambiente con due versioni di PHP come me. Inoltre, brew upgrade aggiornerà la tua versione di PHP e questo non è necessario se il tuo obiettivo non è aggiornare il tuo PHP, ma risolvere un errore di libreria.
mpoletto,

1
Questa è la migliore soluzione che ho provato finora, la risposta selezionata non ha funzionato
Alleo Indong

5
Non lo farei perché brew upgradeaggiornerò tutti i tuoi pacchetti di birra obsoleti, invece, probabilmente lo fai solo brew upgrade npmo un pacchetto specifico, non tutti.
xgMz,

2
@xgMz Hai ragione su questo. Per me, non mi importava se stavo aggiornando tutti i miei pacchetti, ma per qualcuno che non vuole, quindi probabilmente non è eccezionale. Ho aggiunto una nota alla mia soluzione. Grazie!
Vim Diesel,

279

Nel mio caso, ciò è accaduto perché icu4c è stato aggiornato alla versione 63 ma la mia immagine postgres installata localmente faceva ancora riferimento a icu4c 62.1. Pertanto ho dovuto cambiare la versione di icu4c utilizzata:

 brew info icu4c
 brew switch icu4c <version>

Dove si versiontrova la versione installata restituitainfo


1
Questo è esattamente quello che è successo anche a me e mi hai portato sulla strada giusta. Il principale avvertimento di questo approccio è che devi aver precedentemente installato questa versione. Ho risolto il problema nella mia risposta
Leland,

19
Non ho installato 62.1. brew list icu4cha mostrato un file da /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1riparato per me.
Steven Ensslen,

3
Ho trovato questa pagina dopo aver trovato questo errore nei miei registri di Postgres. Ho anche provato, brew switch icu4c 63.1ma ho ancora riscontrato lo stesso errore nei registri, anche dopo aver riavviato Postgres. Non sono sicuro di cosa fare dopo ...
Andrew

27
Ho finito per correre brew reinstall postgrese questo sembrava risolvere i miei problemi
Andrew

1
Aiuta a passare a icu4c 61.1. 63.1- non risolvere. 62.1- non trovato.
Pavel Petrovich,

82

In realtà sono abbastanza sorpreso che questa soluzione non sia stata ancora presentata e penso che sia la soluzione più semplice.

Vai a GitHub, trovare la versione del brewfile che corrisponde alla versione di icu4ccui avete bisogno e ottenere la versione grezza del file (seguire il link di cui sopra e cliccare View Filepoi Raw).

Quindi basta avere brew reinstallare da quell'URL.

Ad esempio, versione 62.1:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb

Ad esempio, versione 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb

2
sei un salvavita!
Brad Kent,

1
Questa è in realtà la soluzione migliore se, brew switch icu4c 62.1non funziona per te in prima istanza.
sabreprashant

1
Questa è l'unica cosa che ha funzionato per me dopo ore di tentativi di riparazione di npm. Grazie!
Galfisher

18
Ha funzionato alla grande! Per correggere l'errore dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibquesto comando lo brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
risolveva

2
Per icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W

70

Ho scoperto che, come @Grey Black, dovevo installare effettivamente la v62.1 di icu4c. Nient'altro ha funzionato.

Tuttavia, brew switch icu4c 62.1funziona solo se hai installato 62.1 in passato. Se non lo hai, ci sono più legwork coinvolti. Homebrew non semplifica l'installazione delle versioni precedenti delle formule.

Ecco come l'ho fatto:

  1. Per prima cosa abbiamo bisogno di un clone profondo del repository Homebrew. Questo potrebbe richiedere del tempo:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4crintracciare un commit che fa riferimento al 62.1; 575eb4bfa il trucco.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cOra dovresti avere la versione corretta della dipendenza! Ora solo per ...
  7. git reset && git checkout . Pulisci la tua ricetta modificata.

Quando lo faccio brew log icu4c, ci sono solo 3-4 risultati. Nessuna menzione 62.1. Anche l'hash che usi sopra non funziona. Hanno rimosso 62?
Noè,

2
Dovresti prima fare git -C (brew --repo homebrew/core) fetch --unshallowper assicurarti di avere una cronologia completa del birrificio.
Noah,

44
Tanto dramma per un aggiornamento del filato.
Eric Walker,

4
Questa è l'unica soluzione là fuori che ha funzionato per me, grazie! Nel mio caso il problema era il pacchetto ffmpeg che, presumo, installava la versione più recente di icu4c. Né l'aggiornamento, l'aggiornamento della birra funzionava, né la reinstallazione, il ricollegamento, la costruzione di php dal sorgente.
Gedijedi,

5
Nel mio caso ho avuto bisogno di icu4c v63, quindi il relativo commit per il checkout è bc0c97952453ff6afc146aa3a706e9902aba4300 . Il comando git è git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbe quindibrew switch 63.1
nahuelhds,

39

Ho avuto lo stesso problema dopo aver aggiornato il mio macOSalla versione 10.13.6. Non posso correre composere phpcomandi. Dopo aver fatto ricerche per un po 'e aver provato varie soluzioni pubblicate online, reinstallare php usando homebrewfunzionato.

brew reinstall php@7.1

Aggiunto il 14 marzo sulla base del commento di Ryan

ottieni la versione che stai attualmente usando eseguendo php -ve ottieni le formule giuste (che puoi trovare qui: https://formulae.brew.sh/formula/php ) da sostituire @7.1nel comando sopra.


8
Ho avuto lo stesso errore in esecuzione nodedopo l'aggiornamento a macOS 10.14.2, brew reinstall nodeera anche il biglietto per me
gnmerritt

Ho iniziato a ricevere questo errore dopo aver installato un nuovo pacchetto con brew. Farlo brew upgraderisolto per me.
Samurai Jack,

1
brew reinstall phppotrebbe finire con l'installazione di una versione diversa da quella corrente. Potrebbe essere necessario specificare la versione utilizzandophp@7.1
Ryan

3
non è possibile ottenere la versione corrente eseguendo php -vse il tuo php è rotto: p
gingerCodeNinja

1
@gingerCodeNinja è vero, forse questo potrebbe aiutare: per Mac OS, vai al terminale ed esegui echo $PATH(se hai php, dovresti vedere qualcosa del genere :) /usr/local/opt/php@7.2/binquesto è un modo per scoprire quali versioni sono attualmente in uso.
Arun Karnati,

34

Esegui npm versione vedi se vedi lo stesso errore.

In tal caso, aggiorna la tua versione di npm brew upgrade npm.

==> Upgrading 1 outdated package, with result:
npm 8.1.2 -> 10.3.0
==> Upgrading npm
==> Installing dependencies for node: icu4c
==> Installing node dependency: icu4c

Crediti


15

Questo mi ha risolto:

brew upgrade node

1
Questo ha funzionato anche per me. Non l'ho mai investigato completamente, ma credo che brew abbia corretto anche le dipendenze durante l'aggiornamento del nodo. Questo sembrava molto più contenuto rispetto all'aggiornamento della birra.
Hendrikbeck,

1
sembra un caso simile,> "brew reinstallode node" mi ha aiutato dopo il passaggio a Catalina
greencrest,

9

Giusto brew remove phpe brew install phpnon ha funzionato, né ha funzionato brew reinstall php. La mia soluzione era fare:

brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup

Ora php -vmi dà:

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )

5

Sembra impossibile collegarsi icu4cutilizzando brewdopo l'ultimo aggiornamento di OS X. Il che rende le cose più interessanti. L'unica soluzione che ho trovato funzionante per me:

  1. Scarica e compila icu4c62.1 in/usr/local/icu4c/62.1
mkdir ~/sources
cd ~/sources
wget http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
tar xvzf icu4c-62_1-src.tgz
cd icu/source/

sudo mkdir /usr/local/icu4c/62.1
./configure --prefix=/usr/local/icu4c/62.1
make
sudo make install
  1. Libs di collegamento:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Impostare DYLD_LIBRARY_PATHin ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include

1
Sto eseguendo PHP 7.1 e questa è stata l'unica cosa che ha funzionato per me.
WebTigers

Nel mio caso avevo bisogno della versione 64.2, quindi l'ho scaricata da github.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm



2

Per me brew reinstall nodejsrisolto questo problema - il mio problema era con l'esecuzione di Elixir / Phoenix, quindi non specifico di PHP, penso che sia stato causato da brew install postgres, ma la reinstallazione non ha aiutato. Lo stavo ricevendo dai npmcomandi.


2

brew update && brew upgrade ha funzionato per me


Benvenuti in SO! La tua collaborazione è benvenuta. In questo caso, ci sono altre 15 domande, quindi sarà un buon punto per mostrare i tuoi pro.
David García Bodego,

2

Questo è ciò che alla fine ha funzionato per me.

brew reinstall postgres

Dopo aver eseguito il comando sopra potrebbe essere necessario eseguire

brew postgresql-upgrade-database

per accedere ai tuoi dati precedenti.


Dopo aver provato soprattutto, solo questo ha funzionato per me.
Kripalu Sar,

1

Invece di installare una vecchia versione di icu4ccui il vecchio php (precompilato) può collegarsi, è meglio ricompilare il vecchio php per collegarsi alla libreria più recente.

brew uninstall php@7.2
brew install --build-from-source php@7.2

Questo genererà php e lo collegherà alla libreria più recente. ho trovatoreinstall non ha funzionato del tutto; la nuova installazione è bloccata quando la cartella di destinazione esiste già.

L'ho fatto anche brew link --force php@7.2per il mio ambiente.


Ho provato questo ma nessun miglioramento; Il brew switch icu4c 62.1comando di Gray Black ha funzionato per me, comunque.
Jamie Birch,

1

La risposta di Leland ha funzionato per me, ma ho dovuto cambiare i passaggi 4 e 6 per:

4) checkout git -B icu4c-62.1 575eb4b

6) brew reinstallare Formula / icu4c.rb


1

Per eseguire il downgrade, ho dovuto ricompilare dalla fonte (MacOS Mojave)

$ wget https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
$ tar xvfz icu4c-62_1-src.tgz
$ cd icu/sources
$ ./configure
$ make
$ make install

1

ho seguito questo articolo qui e questo sembra essere il pezzo mancante del puzzle per me:

brew uninstall node@8


1

Su OSX 10.15.4 l'esecuzione ha xcode-select --installrisolto il problema per me.


0

Anche questo errore è stato riscontrato dopo l'installazione di php 7.3. L'ho risolto aggiornando solo le versioni del mio vecchio php (5.6 e 7.0, non dai repository ufficiali).

I manutentori avevano compilato nuove versioni di php contro l'attuale icu4c.

Nel mio caso, PHP 7 è passato da 0,31 a 0,33 e il problema è stato risolto.


Questo non è coperto dalle altre risposte?
JJ per Transparency e Monica

IMO, no. Una risposta parla di ricompilazione e quello che devo fare è "aggiorna".
David Fernández Rafael,

Ho riscontrato questo errore anche dopo l'aggiornamento da un repository non ufficiale ma il nodo di aggiornamento brew lo ha risolto.
user3685048


-1

nel mio caso, reinstallo tutti i pacchetti installati con Homebrew

$ brew list | xargs brew reinstall

Successivamente, inizio a installare la versione di cui ho bisogno

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.