dyld: biblioteka nie załadowana: /usr/local/opt/icu4c/lib/libicui18n.62.dylib błąd uruchamiania php po zainstalowaniu węzła z brew na Macu

280

Zainstalowałem węzeł za pomocą homebrew (Mojave), potem php przestał działać i jeśli spróbuję uruchomić, php -vpojawia się ten błąd:

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

Próbowałem odinstalować zarówno węzeł, jak i icu4c, ale problem nadal występuje

petekaner
źródło
Czy zainstalowałeś również php z Homebrew? Czy próbowałeś ponownie zainstalować php?
Ortomala Lokni
1
Dla potomnych: odinstaluj / zainstaluj ponownie przędzę / węzeł.
Nathaniel Ford
12
zgodnie z moim zrozumieniem dzieje się tak, gdy masz niedopasowane zależności wersji. w moim przypadku polecenie „brew upgrade” naprawiło moje problemy. proszę mnie poprawić, jeśli się mylę w jakikolwiek sposób.
sh6210

Odpowiedzi:

387

Uwaga - spowoduje to uaktualnienie twojej wersji PHP.

Właśnie miałem ten sam problem. Ulepszenie Homebrew, a następnie sprzątanie działało dla mnie. Ten błąd prawdopodobnie pojawił się dla mnie z powodu niedopasowania w wersjach pakietów. Żadne z powyższych rozwiązań nie rozwiązało mojego błędu, ale uruchomiły następujące polecenia homebrew.

brew upgrade

Uwaga - spowoduje to uaktualnienie wszystkich twoich opakowań parzenia. Jeśli chcesz tylko uaktualnić określone pakiety, upewnij się, że są określone.

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

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

i wtedy

brew cleanup
Vim Diesel
źródło
40
To było ... łatwe
Alan
7
Myślę, że nie jest to dobry pomysł dla tych, którzy mają środowisko z dwiema wersjami PHP, takimi jak ja. Również brew upgrade zaktualizuje twoją wersję PHP i nie jest to konieczne dobre, jeśli twoim celem nie jest aktualizacja PHP, ale rozwiązanie błędu biblioteki.
mpoletto
1
To najlepsze rozwiązanie, jakie do tej pory wypróbowałem, wybrana odpowiedź nie zadziałała
Alleo Indong
5
Nie zrobiłbym tego, ponieważ brew upgradezaktualizuje wszystkie wasze nieaktualne pakiety napoju, zamiast tego prawdopodobnie tylko zrób brew upgrade npmlub konkretny pakiet, nie wszystkie.
xgMz
2
@xgMz Masz rację. Dla mnie nie obchodziło mnie, czy aktualizuję wszystkie moje pakiety, ale dla kogoś, kto nie chce, to prawdopodobnie nie jest świetne. Dodałem notatkę do mojego rozwiązania. Dzięki!
Vim Diesel
278

W moim przypadku stało się tak, ponieważ icu4c został zaktualizowany do wersji 63, ale mój lokalnie zainstalowany obraz postgres nadal odwoływał się do icu4c 62.1. Dlatego musiałem zmienić używaną wersję icu4c:

 brew info icu4c
 brew switch icu4c <version>

Gdzie versionjest zwracana zainstalowana wersjainfo

Szaro czarny
źródło
1
Dokładnie to samo mi się przydarzyło i doprowadziłeś mnie na właściwy tor. Głównym zastrzeżeniem tego podejścia jest to, że musisz wcześniej zainstalować tę wersję. Obejrzałem to w swojej odpowiedzi
Leland
19
Nie zainstalowałem 62.1. brew list icu4cpokazał pliki z /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1naprawiłem to dla mnie.
Steven Ensslen
3
Znalazłem tę stronę po znalezieniu tego błędu w moich logach Postgres. Próbowałem również, brew switch icu4c 63.1ale nadal pojawia się ten sam błąd w logach, nawet po ponownym uruchomieniu postgres. Nie jestem pewien, co robić dalej ...
Andrew
27
Skończyło się bieganie brew reinstall postgresi to chyba rozwiązało moje problemy
Andrew
1
Pomaga przełączyć się na icu4c 61.1. 63.1- nie rozwiązuje. 62.1- nie znaleziono.
Pavel Petrovich
81

Jestem właściwie zaskoczony, że to rozwiązanie nie zostało jeszcze zaprezentowane i wydaje mi się, że jest to najłatwiejsze rozwiązanie.

Idź do GitHub, znajdź wersję pliku browaru, która odpowiada wersji icu4c, której potrzebujesz, i uzyskaj surową wersję pliku (skorzystaj z linków powyżej i kliknij View Filewtedy Raw).

Następnie wystarczy ponownie zainstalować brew z tego adresu URL.

Na przykład wersja 62.1:

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

Na przykład wersja 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
Kevin Elliott
źródło
2
ratujesz życie!
Brad Kent
1
To jest rzeczywiście najlepsze rozwiązanie, jeśli brew switch icu4c 62.1nie działa w pierwszej kolejności.
saberprashant
1
To jedyna rzecz, która działała dla mnie po wielu godzinach próbowania naprawy npm. Dzięki!
galfisher
18
Działa świetnie! Aby naprawić błąd, dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibpolecenie to naprawiło:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary,
2
Dla icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W
70

Okazuje się, że ja, podobnie jak @ Grey Black, musiałem zainstalować wersję 62.1 icu4c. Nic innego nie działało.

brew switch icu4c 62.1Działa to jednak tylko wtedy, gdy w przeszłości zainstalowano 62.1. Jeśli nie masz, jest więcej pracy nóg. Homebrew nie ułatwia instalacji poprzednich wersji formuł.

Oto jak to zrobiłem:

  1. Najpierw potrzebujemy głębokiego klonu repozytorium Homebrew. To może zająć chwilę:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4cwyśledzić zatwierdzenie, które odwołuje się do 62.1; 575eb4bZrób sztuczkę.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cPowinieneś teraz mieć poprawną wersję zależności! Teraz tylko ...
  7. git reset && git checkout . Oczyść zmodyfikowany przepis.
Leland
źródło
Kiedy to robię brew log icu4c, są tylko 3-4 wyniki. Żadna wzmianka 62.1. Hash, którego używasz powyżej, również nie działa. Czy usunęli 62?
Noe,
2
Powinieneś najpierw zrobić, git -C (brew --repo homebrew/core) fetch --unshallowaby upewnić się, że masz pełną historię gitów.
Noah
44
Tyle dramatu dla ulepszenia przędzy.
Eric Walker,
4
To jedyne dostępne rozwiązanie, które dla mnie zadziałało, dziękuję! W moim przypadku problemem był pakiet ffmpeg, który, jak zakładam, zainstalował nowszą wersję icu4c. Ani aktualizacja, ani aktualizacja browaru nie działała, ani ponowna instalacja, ponowne łączenie, budowanie php ze źródła.
gedijedi
5
W moim przypadku potrzebowałem icu4c v63, więc powiązane zatwierdzenie do kasy to bc0c97952453ff6afc146aa3a706e9902aba4300 . Poleceniem git jest, git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rba następniebrew switch 63.1
nahuelhds
39

Miałem ten sam problem po aktualizacji macOSdo wersji 10.13.6. Nie mogę biegać composeri phpwydawać poleceń. Po dłuższym badaniu i wypróbowaniu różnych rozwiązań opublikowanych online, przeinstalowanie php przy użyciu homebrewdziałało.

brew reinstall [email protected]

Dodano 14 marca na podstawie komentarza Ryana

pobierz wersję, której obecnie używasz, php -vi uruchom odpowiednie formuły (które możesz znaleźć tutaj: https://formulae.brew.sh/formula/php ) i zastąp @7.1je powyższym poleceniem.

Arun Karnati
źródło
8
Dostałem ten sam błąd nodepo uaktualnieniu systemu macOS do 10.14.2, brew reinstall nodebył również biletem dla mnie
gnmerritt
Zacząłem dostawać ten błąd po zainstalowaniu nowego pakietu z naparem. Robi brew upgradestałe to dla mnie.
samuraj jack
1
brew reinstall phpmoże skończyć się instalacją innej wersji niż bieżąca. Może być konieczne określenie wersji za pomocą[email protected]
Ryan
3
nie możesz pobrać bieżącej wersji, php -vjeśli twój php jest uszkodzony: p
gingerCodeNinja
1
@gingerCodeNinja to prawda, być może może to pomóc: w systemie Mac OS przejdź do terminalu i uruchom echo $PATH(jeśli tak php, powinieneś zobaczyć coś takiego :) /usr/local/opt/[email protected]/binjest to jeden ze sposobów, aby dowiedzieć się, które wersje są obecnie używane.
Arun Karnati
33

Uruchom npm versioni sprawdź, czy widzisz ten sam błąd.

Jeśli tak, zaktualizuj swoją wersję 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

Kredyty

Lucas Bustamante
źródło
15

Naprawiłem to dla mnie:

brew upgrade node
serdarsenay
źródło
1
To również działało dla mnie. Nigdy go w pełni nie zbadałem, ale uważam, że browar naprawił również zależności podczas aktualizacji węzła. To było znacznie bardziej ograniczone w porównaniu do aktualizacji naparu.
hendrikbeck
1
wydaje się podobny przypadek,> „węzeł reinstalacji parzenia” pomógł mi po przejściu na Catalinę
greencrest
9

Po prostu brew remove phpi brew install phpnie działało, ani nie działało brew reinstall php. Moje rozwiązanie polegało na:

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

Teraz php -vdaje mi:

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )
glajan
źródło
5

Wydaje się, że nie można połączyć icu4cza pomocą brewnajnowszej aktualizacji OS X. Co czyni rzeczy bardziej interesującymi. Jedyne rozwiązanie, które dla mnie działało:

  1. Pobierz i skompiluj icu4c62.1 do/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. Łącza lib:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Ustaw DYLD_LIBRARY_PATHw ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include
Serhey Dolgushev
źródło
1
Używam PHP 7.1 i to była jedyna rzecz, która działała dla mnie.
WebTigers
W moim przypadku potrzebowałem wersji 64.2, więc pobrałem
RafaelQm
3

Na MacOS Mojave jedyny sposób, w jaki mogłem to naprawić brew upgrade

Léo Maldonado
źródło
2

Dla mnie brew reinstall nodejsto naprawiłem - mój problem polegał na uruchomieniu Elixir / Phoenix, więc nie jest specyficzny dla PHP, myślę, że był to spowodowany brew install postgres, ale ponowna instalacja nie pomogła. Otrzymywałem to z npmpoleceń.

Callum M.
źródło
2

brew update && brew upgrade pracował dla mnie

sanjok dangol
źródło
Witamy w SO! Twoja współpraca jest mile widziana. W takim przypadku jest jeszcze 15 pytań, więc dobrze będzie pokazać swoje zalety.
David García Bodego,
1

Zamiast instalować starą wersję tego icu4c, do którego stary (wstępnie skompilowany) php może się połączyć, lepiej ponownie skompilować stary php, aby połączyć się z nowszą biblioteką.

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

Spowoduje to zbudowanie php i połączenie go z nowszą biblioteką. znalazłemreinstall że nie całkiem działa; nowa instalacja została uduszona, gdy folder docelowy już istniał.

Zrobiłem też brew link --force [email protected]dla mojego środowiska.

Nocnik
źródło
Próbowałem tego, ale bez poprawy; brew switch icu4c 62.1Jednak polecenie Greya Blacka działało dla mnie.
Jamie Birch
1

Odpowiedź Lelanda działała dla mnie, ale musiałem zmienić kroki 4 i 6, aby:

4) Git Checkout -B icu4c-62.1 575eb4b

6) ponownie zainstaluj napar Formula / icu4c.rb

sgrwg
źródło
1

Aby obniżyć wersję, musiałem ponownie skompilować ze źródła (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
Smokie
źródło
1

śledziłem ten artykuł tutaj i wydaje mi się, że jest to brakujący element układanki:

brew uninstall node@8

gmansour
źródło
1

W OSX 10.15.4 działający xcode-select --installproblem naprawił dla mnie.

Winter Faulk
źródło
1

To w końcu dla mnie zadziałało.

brew reinstall postgres

Po uruchomieniu powyższego polecenia może być konieczne uruchomienie

brew postgresql-upgrade-database

aby uzyskać dostęp do swoich poprzednich danych.

Muzammil Baloch
źródło
Po próbie przede wszystkim tylko to zadziałało dla mnie.
Kripalu Sar
0

Ten błąd też pojawia się po zainstalowaniu php 7.3. Rozwiązałem problem aktualizacji tylko moich starych wersji php (5.6 i 7.0, nie z oficjalnych repozytoriów).

Opiekunowie skompilowali nowe wersje php dla obecnego icu4c.

W moim przypadku PHP 7 uzyskał od 0,31 do 0,33 i problem został rozwiązany.

David Fernández Rafael
źródło
Czy nie obejmują tego inne odpowiedzi?
JJ dla Transparency and Monica
IMO, nr Jedna odpowiedź mówi o ponownej kompilacji, a to, co muszę zrobić, to „aktualizacja”.
David Fernández Rafael
Ten błąd też dostałem po aktualizacji z nieoficjalnego repozytorium, ale węzeł aktualizacji brew naprawił go.
user3685048
0

Rozwiązanie w tej treści zrobiło to dla mnie

brew uninstall --ignore-dependencies node icu4c
brew install node
mokagio
źródło
-1

w moim przypadku ponownie instaluję wszystkie pakiety zainstalowane z Homebrew

$ brew list | xargs brew reinstall

Następnie zaczynam instalować potrzebną wersję

Anis Slama
źródło