dyld: Library tidak dimuat: /usr/local/opt/icu4c/lib/libicui18n.62.dylib kesalahan menjalankan php setelah menginstal node dengan minuman di Mac

283

Saya menginstal node menggunakan homebrew (Mojave), kemudian php berhenti bekerja dan jika saya mencoba menjalankan php -vsaya mendapatkan kesalahan ini:

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

Saya mencoba untuk menghapus kedua node dan icu4c tetapi masalahnya masih ada

petekaner
sumber
Apakah Anda juga menginstal php dari Homebrew? Apakah Anda mencoba menginstal ulang php?
Ortomala Lokni
1
Untuk anak cucu: uninstall / instal ulang benang / simpul tampaknya melakukan trik.
Nathaniel Ford
12
menurut pemahaman saya, ini terjadi ketika Anda telah ketergantungan versi versi. dalam kasus saya, perintah "brew upgrade" memperbaiki masalah saya. tolong perbaiki saya, jika saya salah dalam hal apa pun.
sh6210

Jawaban:

392

Catatan - Ini akan meningkatkan versi PHP Anda.

Saya hanya punya masalah yang sama. Meng-upgrade Homebrew dan kemudian membersihkannya bekerja untuk saya. Kesalahan ini kemungkinan muncul untuk saya karena ketidakcocokan dalam versi paket. Tidak ada solusi di atas yang menyelesaikan kesalahan saya, tetapi menjalankan perintah homebrew berikut berhasil.

brew upgrade

Perhatian - Ini akan meningkatkan semua paket minuman Anda. Jika Anda hanya ingin memutakhirkan paket tertentu, pastikan untuk spesifik.

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

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

lalu

brew cleanup
Vim Diesel
sumber
40
Itu ... mudah
Alan
7
Saya pikir ini bukan ide yang baik bagi mereka yang memiliki lingkungan dengan dua versi PHP seperti saya. Selain itu, peningkatan bir akan meningkatkan versi PHP Anda dan ini tidak perlu baik jika tujuan Anda bukan untuk meningkatkan PHP Anda, tetapi memecahkan kesalahan perpustakaan.
mpoletto
1
Ini adalah solusi terbaik yang saya coba sejauh ini, jawaban yang dipilih tidak berhasil
Alleo Indong
5
Saya tidak akan melakukan ini karena brew upgradeakan memperbarui semua paket usang buatan Anda, sebagai gantinya, mungkin hanya dilakukan brew upgrade npmatau paket tertentu, tidak semua.
xgMz
2
@xgMz Anda benar tentang ini. Bagi saya, saya tidak peduli jika saya memperbarui semua paket saya, tetapi untuk seseorang yang tidak mau, maka itu mungkin tidak bagus. Saya menambahkan catatan ke solusi saya. Terima kasih!
Vim Diesel
279

Dalam kasus saya, itu terjadi karena icu4c ditingkatkan ke versi 63 tetapi gambar postgres saya yang diinstal secara lokal masih merujuk ke icu4c 62.1. Karena itu saya harus mengubah versi icu4c yang digunakan:

 brew info icu4c
 brew switch icu4c <version>

Di mana versionversi yang diinstal dikembalikan olehinfo

Abu-abu hitam
sumber
1
Ini persis apa yang terjadi pada saya juga, dan Anda membuat saya di jalur yang benar. Peringatan utama untuk pendekatan ini adalah Anda harus menginstal versi ini sebelumnya. Saya mengerjakan ini dalam jawaban saya
Leland
19
Saya tidak menginstal 62.1. brew list icu4cmenunjukkan file dari /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1memperbaikinya untukku.
Steven Ensslen
3
Saya menemukan halaman ini setelah menemukan kesalahan ini di log Postgres saya. Saya juga mencoba brew switch icu4c 63.1tetapi masih mendapatkan kesalahan yang sama di log, bahkan setelah me-restart postgres. Tidak yakin apa yang harus dilakukan selanjutnya ...
Andrew
27
Saya akhirnya berlari brew reinstall postgresdan itu sepertinya memecahkan masalah saya
Andrew
1
Membantu beralih ke icu4c 61.1. 63.1- tidak menyelesaikan. 62.1- tidak ditemukan.
Pavel Petrovich
82

Saya sebenarnya cukup terkejut bahwa solusi ini belum disajikan, dan saya merasa ini adalah solusi termudah.

Pergi ke GitHub, cari versi brewfile yang cocok dengan versi icu4cyang Anda butuhkan dan dapatkan versi mentah file (ikuti tautan di atas dan klik View Filekemudian Raw).

Kemudian buat saja instal ulang dari url itu.

Misalnya, versi 62.1:

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

Misalnya, versi 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
Kevin Elliott
sumber
2
kamu adalah penyelamat!
Brad Kent
1
Ini sebenarnya solusi terbaik jika, brew switch icu4c 62.1tidak berhasil untuk Anda dalam contoh pertama.
saberprashant
1
Ini adalah satu-satunya hal yang berhasil bagi saya setelah berjam-jam mencoba memperbaiki npm. Terima kasih!
pengasuh ikan
18
Bekerja dengan baik! Untuk memperbaiki kesalahan dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibini, perbaiki perintah ini:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary
2
Untuk icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W
70

Ternyata saya, seperti @Grey Black, harus benar-benar menginstal v62.1 dari icu4c. Tidak ada yang berhasil.

Namun, brew switch icu4c 62.1hanya berfungsi jika Anda telah menginstal 62.1 di masa lalu. Jika Anda belum ada kerja keras yang terlibat. Homebrew tidak membuatnya mudah untuk menginstal versi formula sebelumnya.

Begini cara saya melakukannya:

  1. Pertama-tama kita perlu klon repo Homebrew yang mendalam. Ini mungkin memakan waktu cukup lama:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4cuntuk melacak komit yang merujuk 62.1; 575eb4blakukan triknya.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cAnda sekarang harus memiliki versi ketergantungan yang benar! Sekarang hanya untuk ...
  7. git reset && git checkout . Bersihkan resep Anda yang telah dimodifikasi.
Leland
sumber
Ketika saya melakukannya brew log icu4c, hanya ada 3-4 hasil. Tidak ada yang menyebutkan 62.1. Hash yang Anda gunakan di atas juga tidak berfungsi. Sudahkah mereka menghapus 62?
Nuh
2
Pertama-tama Anda harus lakukan git -C (brew --repo homebrew/core) fetch --unshallowuntuk memastikan Anda memiliki riwayat pembuatan bir penuh.
Noah
44
Begitu banyak drama untuk peningkatan benang.
Eric Walker
4
Ini adalah satu-satunya solusi di luar sana yang bekerja untuk saya, terima kasih! Dalam kasus saya masalahnya adalah paket ffmpeg yang, saya asumsikan, menginstal versi yang lebih baru icu4c. Tidak memperbarui, memperbarui minuman bekerja, atau menginstal ulang, menghubungkan kembali, membangun php dari sumber.
gedijedi
5
Dalam kasus saya, saya membutuhkan icu4c v63, jadi komit terkait untuk checkout adalah bc0c97952453ff6afc146aa3a706e9902aba4300 . Perintah git adalah git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbdan kemudianbrew switch 63.1
nahuelhds
39

Saya memiliki masalah yang sama setelah saya memutakhirkan macOSke versi saya 10.13.6. Saya tidak bisa menjalankan composerdan phpmemerintahkan. Setelah meneliti sebentar dan mencoba berbagai solusi yang diposting online, instal ulang menggunakan php homebrewberhasil.

brew reinstall [email protected]

Ditambahkan pada 14 Maret berdasarkan komentar Ryan

dapatkan versi yang saat ini Anda gunakan dengan menjalankan php -vdan mendapatkan formula yang tepat (yang dapat Anda temukan di sini: https://formulae.brew.sh/formula/php ) untuk mengganti @7.1dalam perintah di atas.

Arun Karnati
sumber
8
Saya mendapatkan kesalahan yang sama dengan berjalan nodesetelah memutakhirkan macOS ke 10.14.2, brew reinstall nodeadalah tiket untuk saya juga
gnmerritt
Saya mulai mendapatkan kesalahan ini setelah menginstal paket baru dengan minuman. Melakukan brew upgradeperbaikan untukku.
samurai jack
1
brew reinstall phpmungkin akhirnya menginstal versi yang berbeda dengan yang saat ini. Anda mungkin harus menentukan versi menggunakan[email protected]
Ryan
3
Anda tidak bisa mendapatkan versi saat ini dengan menjalankannya php -vjika php Anda rusak: p
gingerCodeNinja
1
@gingerCodeNinja itu benar, mungkin ini bisa membantu: untuk Mac OS, buka terminal dan jalankan echo $PATH(jika sudah php, Anda akan melihat sesuatu seperti ini :) /usr/local/opt/[email protected]/binini adalah salah satu cara untuk mengetahui versi apa yang saat ini sedang digunakan.
Arun Karnati
34

Jalankan npm versiondan lihat apakah Anda melihat kesalahan yang sama.

Jika demikian, tingkatkan versi npm Anda 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

Kredit

Lucas Bustamante
sumber
15

Ini memperbaikinya untuk saya:

brew upgrade node
serdarsenay
sumber
1
Ini juga bekerja untuk saya. Saya tidak pernah sepenuhnya menyelidikinya tetapi saya percaya minuman baru saja memperbaiki dependensi saat meningkatkan node. Ini terasa jauh lebih terkandung dibandingkan dengan upgrade minuman.
hendrikbeck
1
tampaknya kasus serupa,> 'brew instal ulang node' memang membantu saya setelah beralih ke Catalina
greencrest
9

Adil brew remove phpdan brew install phptidak bekerja, juga tidak brew reinstall php. Solusi saya adalah melakukan:

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

Sekarang php -vberi saya:

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

Sepertinya tidak mungkin untuk ditautkan icu4cmenggunakan brewsetelah pembaruan OS X terbaru. Yang membuat segalanya lebih menarik. Satu-satunya solusi yang saya temukan bekerja untuk saya:

  1. Unduh dan kompilasi icu4c62.1 untuk/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. Tautan libs:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Diatur DYLD_LIBRARY_PATHdalam ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include
Serhey Dolgushev
sumber
1
Saya menjalankan PHP 7.1 dan ini adalah satu-satunya hal yang berhasil untuk saya.
WebTigers
Dalam kasus saya, saya membutuhkan versi 64.2, jadi saya mengunduhnya dari github.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm
3

Di MacOS Mojave, satu-satunya cara saya bisa memperbaikinya adalah dengan brew upgrade

Léo Maldonado
sumber
2

Saya mempunyai masalah karena versi PHP saya (7.3) mengharapkan icu4c 63 dan minuman hanya akan menginstal 64.

https://stackoverflow.com/a/55828190/2000947 membantu saya menginstal 63.

Matt Rink
sumber
1
setelah mencari sebentar, inilah yang membantu saya. Terima kasih
jarchuleta
2

Bagi saya brew reinstall nodejsmemperbaiki ini - masalah saya adalah dengan menjalankan Elixir / Phoenix sehingga tidak spesifik PHP, saya pikir itu disebabkan oleh brew install postgres, tetapi menginstal ulang itu tidak membantu. Saya mendapatkannya dari npmperintah.

Callum M
sumber
2

brew update && brew upgrade bekerja untukku

sanjok dangol
sumber
Selamat datang di SO! Kolaborasi Anda disambut baik. Dalam hal ini, ada 15 pertanyaan lagi sehingga akan menjadi poin yang bagus untuk menunjukkan kelebihan Anda.
David García Bodego
2

Inilah yang akhirnya berhasil untuk saya.

brew reinstall postgres

Setelah menjalankan perintah di atas, Anda mungkin perlu menjalankan

brew postgresql-upgrade-database

untuk mengakses data Anda sebelumnya.

Muzammil Baloch
sumber
Setelah mencoba di atas segalanya, hanya ini yang berhasil untuk saya.
Kripalu Sar
1

Daripada menginstal versi lama icu4cyang dapat ditautkan oleh php yang lebih lama (yang sudah dikompilasi), lebih baik mengkompilasi ulang php yang lama untuk menautkan ke pustaka yang lebih baru.

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

Ini akan membangun php dan menautkannya ke perpustakaan yang lebih baru. Saya menemukan reinstalltidak cukup bekerja; instalasi baru tersedak ketika folder tujuan sudah ada.

Saya juga melakukannya brew link --force [email protected]untuk lingkungan saya.

Jerry
sumber
Mencoba ini tetapi tidak ada peningkatan; Namun, brew switch icu4c 62.1perintah Gray Black bekerja untukku.
Jamie Birch
1

Jawaban Leland berhasil untuk saya, tetapi saya harus mengubah langkah 4 dan 6 menjadi:

4) checkout git -B icu4c-62.1 575eb4b

6) buat instal ulang Formula / icu4c.rb

sgrwg
sumber
1

Untuk menurunkan versi, saya harus mengkompilasi ulang dari sumber (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
sumber
1

saya mengikuti artikel ini di sini dan ini tampaknya menjadi bagian yang hilang dari teka-teki bagi saya:

brew uninstall node@8

gmansour
sumber
1

Pada OSX 10.15.4 menjalankan xcode-select --installmemperbaiki masalah untuk saya.

Faulk Musim Dingin
sumber
0

Mendapat kesalahan ini juga, setelah menginstal php 7.3. Saya telah memutuskan untuk memutakhirkan hanya versi php lama saya (5.6 dan 7.0, bukan dari repo resmi).

Pemelihara telah menyusun versi php baru terhadap icu4c saat ini.

Dalam kasus saya, PHP 7 naik dari 0,31 ke 0,33, dan masalahnya selesai.

David Fernández Rafael
sumber
Bukankah ini tercakup oleh jawaban lain?
JJ untuk Transparansi dan Monica
IMO, tidak. Satu jawaban berbicara tentang kompilasi ulang, dan apa yang harus saya lakukan adalah "memperbarui".
David Fernández Rafael
Saya mendapatkan kesalahan ini juga setelah memutakhirkan dari repo tidak resmi tetapi membuat simpul peningkatan memperbaikinya.
user3685048
0

Solusi dalam inti ini melakukannya untuk saya

brew uninstall --ignore-dependencies node icu4c
brew install node
mokagio
sumber
-1

dalam kasus saya, saya menginstal ulang semua paket yang diinstal dengan Homebrew

$ brew list | xargs brew reinstall

Setelah itu, saya mulai menginstal versi yang saya butuhkan

Anis Slama
sumber