web-dev-qa-db-fra.com

dyld: bibliothèque non chargée: erreur /usr/local/opt/icu4c/lib/libicui18n.62.dylib lors de l'exécution de php afeter lors de l'installation du noeud avec l'infusion sur Mac

J'ai installé le noeud en utilisant homebrew (Mojave), ensuite php a cessé de fonctionner et si j'essaye de lancer php -v, j'obtiens cette erreur:

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

J'ai essayé de désinstaller à la fois le noeud et icu4c mais le problème persiste

18
petekaner

Dans mon cas, cela s’est produit car icu4c a été mis à niveau vers la version 63, mais mon image postgres installée localement est toujours référencée par icu4c 62.1. Par conséquent, je devais changer la version de icu4c utilisée:

 brew switch icu4c 62.1
22
Grey Black

En fait, je suis assez surpris que cette solution n’ait pas encore été présentée et j’ai l’impression que c’est la solution la plus simple.

Allez sur GitHub, trouvez la version du fichier de brassage qui correspond à la version de icu4c dont vous avez besoin et obtenez la version brute du fichier (suivez les liens ci-dessus et cliquez sur View File puis Raw). .

Ensuite, il suffit de brasser la réinstallation à partir de cette URL.

Par exemple, version 62.1:

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

J'ai eu le même problème après avoir mis à niveau ma macOS vers la version 10.13.6. Je ne peux pas exécuter les commandes composer et php. Après avoir longuement recherché et essayé différentes solutions mises en ligne, réinstaller php avec homebrew fonctionnait. 

brew reinstall php

11
Arun Karnati

Cela a résolu le problème pour moi:

brew upgrade node
6
serdarsenay

Exécutez npm version et voyez si vous voyez la même erreur.

Si tel est le cas, mettez à niveau votre version du noeud 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

Crédits

2

brew remove php et brew install php ne fonctionnaient pas, pas plus que brew reinstall php. Ma solution consistait à procéder comme suit:

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

Maintenant, php -v me donne:

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

Je viens d'avoir ce même problème et la mise à niveau de l'homebrew puis le nettoyage a fonctionné pour moi. Cette erreur est probablement apparue pour moi à cause d'une incompatibilité dans les versions de paquet. Aucune des solutions ci-dessus n'a résolu mon erreur.

brew upgrade

et alors

brew cleanup
1
Jase

J'ai eu des problèmes parce que ma version de PHP (7.3) s’attendait à ce que icu4c 63 et brassent installent seulement 64.

https://stackoverflow.com/a/55828190/2000947 m'a aidé à installer 63.

1
Matt Rink

La réponse de Leland a fonctionné pour moi, mais j'ai dû changer les étapes 4 et 6 pour:

4) git checkout -B icu4c-62.1 575eb4b

6) brassez réinstallez Formula/icu4c.rb

0
sgrwg

Vous avez aussi cette erreur après avoir installé PHP 7.3. Je l'avais résolu de mettre à niveau juste mes anciennes versions de PHP (5.6 et 7.0, pas à partir des pensions officielles).

Les responsables avaient compilé de nouvelles versions de php par rapport à la version actuelle de icu4c.

Dans mon cas, PHP 7 passait de 0.31 à 0.33 et le problème a été résolu.

On dirait qu'il est impossible de lier icu4c en utilisant brew après la dernière mise à jour OS X. Ce qui rend les choses plus intéressantes. La seule solution que j'ai trouvée qui fonctionne pour moi:

  1. Téléchargez et compilez icu4c 62.1 en /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. Lien libs:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Définissez DYLD_LIBRARY_PATH dans ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include

J'espère que cela vous fera gagner quelques heures.

0
Serhey Dolgushev

Plutôt que d’installer une ancienne version de icu4c à laquelle l’ancien php (précompilé) peut être lié, il est préférable de recompiler l’ancien php pour le lier à la bibliothèque la plus récente.

brew uninstall [email protected]
brew install --build-from-source [email protected]

Cela construira php et le liera à la nouvelle bibliothèque. J'ai trouvé reinstall n'a pas tout à fait fonctionné; la nouvelle installation était étranglée lorsque le dossier de destination existait déjà.

J'ai aussi fait brew link --force [email protected] pour mon environnement.

0
Jerry

Pour rétrograder, je devais recompiler à partir du code source (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
0
Smokie