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
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
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
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
Cela a résolu le problème pour moi:
brew upgrade node
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
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 )
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
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.
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
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:
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
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
DYLD_LIBRARY_PATH
dans ~/.bash_profile
:export DYLD_LIBRARY_PATH=/usr/local/include
J'espère que cela vous fera gagner quelques heures.
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.
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