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


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

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


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

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.

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 php@7.1

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.


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 menggunakanphp@7.1
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/php@7.2/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


15

Ini memperbaikinya untuk saya:

brew upgrade node

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 )

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

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



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.


2

brew update && brew upgrade bekerja untukku


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.


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 php@7.2untuk lingkungan saya.


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


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

1

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

brew uninstall node@8



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.


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

-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.