dyld: ไลบรารีไม่ถูกโหลด: /usr/local/opt/icu4c/lib/libicui18n.62.dylib เกิดข้อผิดพลาดในการรัน php หลังจากติดตั้งโหนดด้วย brew บน Mac


280

ฉันติดตั้งโหนดโดยใช้ homebrew (Mojave) หลังจากนั้น php หยุดทำงานและหากฉันพยายามเรียกใช้php -vฉันได้รับข้อผิดพลาดนี้:

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

ฉันพยายามถอนการติดตั้งทั้งโหนดและ icu4c แต่ปัญหายังคงอยู่


คุณติดตั้ง php จาก Homebrew หรือยัง คุณพยายามติดตั้ง php ใหม่หรือไม่
Ortomala Lokni

1
สำหรับคนรุ่นหลัง: ถอนการติดตั้ง / ติดตั้งเส้นด้าย / โหนดใหม่ดูเหมือนจะทำตาม
นาธาเนียลฟอร์ด

12
ตามความเข้าใจของฉันสิ่งนี้จะเกิดขึ้นเมื่อคุณไม่ตรงกับการอ้างอิงรุ่น ในกรณีของฉันคำสั่ง "brew อัปเกรด" แก้ไขปัญหาของฉัน โปรดแก้ไขฉันด้วยถ้าฉันผิดในทางใดทางหนึ่ง
sh6210

คำตอบ:


388

หมายเหตุ - นี่จะเป็นการอัพเกรดเวอร์ชั่น PHP ของคุณ

ฉันเพิ่งมีปัญหาเดียวกันนี้ การอัพเกรด Homebrew จากนั้นการทำความสะอาดก็ใช้งานได้สำหรับฉัน ข้อผิดพลาดนี้น่าจะปรากฏขึ้นสำหรับฉันเพราะไม่ตรงกันในรุ่นแพคเกจ วิธีแก้ปัญหาข้างต้นไม่สามารถแก้ไขข้อผิดพลาดของฉันได้ แต่การรันคำสั่ง homebrew ต่อไปนี้ทำ

brew upgrade

ข้อควรระวัง - นี่จะเป็นการอัพเกรดแพ็คเกจการผลิตทั้งหมดของคุณ หากคุณต้องการอัพเกรดแพ็คเกจเฉพาะให้แน่ใจว่าได้ระบุเฉพาะ

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

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

แล้ว

brew cleanup

40
นั่นคือ ... ง่าย
Alan

7
ฉันคิดว่านี่ไม่ใช่ความคิดที่ดีสำหรับผู้ที่มีสภาพแวดล้อมที่มี PHP สองเวอร์ชันเช่นฉัน นอกจากนี้การอัปเกรด Brew จะอัปเกรดเวอร์ชัน PHP ของคุณและนี่ก็ไม่จำเป็นถ้าเป้าหมายของคุณคือการไม่อัปเกรด PHP แต่แก้ไขข้อผิดพลาดของไลบรารี
mpoletto ถึง

1
นี่เป็นทางออกที่ดีที่สุดที่ฉันได้ลองไปแล้วคำตอบที่เลือกไม่ทำงาน
Alleo Indong

5
ฉันจะไม่ทำเช่นนี้เพราะbrew upgradeจะอัปเกรดแพ็กเกจที่ล้าสมัยทั้งหมดของคุณแทนอาจทำเฉพาะbrew upgrade npmหรือแพคเกจเฉพาะไม่ใช่ทั้งหมด
xgMz

2
@xgMz คุณพูดถูก สำหรับฉันฉันไม่สนหรอกว่าฉันจะอัปเดตแพ็คเกจทั้งหมดของฉันหรือไม่ แต่สำหรับบางคนที่ไม่ต้องการ ฉันเพิ่มบันทึกย่อในโซลูชันของฉัน ขอบคุณ!
Vim Diesel

278

ในกรณีของฉันเกิดขึ้นเพราะ icu4c ได้รับการอัพเกรดเป็นรุ่น 63 แต่ภาพ postgres ที่ติดตั้งในเครื่องของฉันยังคงอ้างถึง icu4c 62.1 ดังนั้นฉันต้องเปลี่ยนเวอร์ชัน icu4c ที่ใช้:

 brew info icu4c
 brew switch icu4c <version>

ไหนversionเป็นรุ่นที่ติดตั้งกลับโดยinfo


1
นี่คือสิ่งที่เกิดขึ้นกับฉันเช่นกันและคุณได้รับฉันในการติดตามที่ถูกต้อง ข้อแม้ที่สำคัญสำหรับวิธีการนี้คือคุณต้องติดตั้งรุ่นนี้ก่อนหน้านี้ ฉันทำงานนี้ในคำตอบของฉัน
Leland

19
ฉันไม่ได้ติดตั้ง 62.1 แสดงให้เห็นไฟล์จาก brew list icu4c แก้ไขให้ฉัน /usr/local/Cellar/icu4c/63.1brew switch icu4c 63.1
Steven Ensslen

3
ฉันพบหน้านี้หลังจากพบข้อผิดพลาดนี้ในบันทึก Postgres ของฉัน ฉันพยายามbrew switch icu4c 63.1แต่ก็ยังได้รับข้อผิดพลาดเดียวกันในบันทึกแม้หลังจากรีสตาร์ท postgres ไม่แน่ใจว่าจะทำอย่างไรต่อไป ...
แอนดรู

27
ฉันลงเอยด้วยการวิ่งbrew reinstall postgresและดูเหมือนว่าจะแก้ปัญหาของฉัน
แอนดรูว์

1
icu4c 61.1ช่วยให้สลับไป 63.1- ไม่แก้ 62.1- ไม่พบ.
Pavel Petrovich

81

ฉันค่อนข้างแปลกใจจริง ๆ ที่วิธีนี้ยังไม่ได้นำเสนอและฉันรู้สึกว่ามันเป็นทางออกที่ง่ายที่สุด

ไปที่ GitHub ค้นหาเวอร์ชันของ brewfile ที่ตรงกับรุ่นicu4cที่คุณต้องการและรับไฟล์ raw version (ไปตามลิงก์ด้านบนView Fileแล้วคลิกจากนั้นRaw)

จากนั้นเพียงติดตั้ง Brew จาก URL นั้น

ตัวอย่างเช่นรุ่น62.1:

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

ตัวอย่างเช่นรุ่น64.2:

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

2
คุณเป็นผู้ช่วยชีวิต!
แบรดเคนต์

1
นี่เป็นทางออกที่ดีที่สุดหากbrew switch icu4c 62.1ไม่ได้ผลสำหรับคุณในครั้งแรก
saberprashant

1
นี่เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉันหลังจากพยายามแก้ไข npm ขอบคุณ!
galfisher

18
ใช้งานได้ดีมาก! เพื่อแก้ไขข้อผิดพลาดdyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibคำสั่งนี้แก้ไข:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary

2
สำหรับ icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W

70

กลายเป็นว่าฉันเช่น @Grey Black ต้องติดตั้ง v62.1 จริง ๆ ของ icu4c ไม่มีอะไรทำงาน

อย่างไรก็ตามbrew switch icu4c 62.1จะใช้งานได้เมื่อคุณติดตั้ง 62.1 ในอดีตเท่านั้น หากคุณไม่ได้มีส่วนเกี่ยวข้องมากขึ้น Homebrew ไม่สะดวกในการติดตั้งสูตรเวอร์ชันก่อนหน้า

นี่คือวิธีที่ฉันทำ:

  1. ก่อนอื่นเราต้องโคลนโคลนของ Homebrew repo อาจใช้เวลาสักครู่:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4cเพื่อติดตามการกระทำที่อ้างถึง 62.1; 575eb4bไม่หลอกลวง
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cตอนนี้คุณควรจะมีรุ่นอ้างอิงที่ถูกต้อง! ตอนนี้เพียงเพื่อ ...
  7. git reset && git checkout . ล้างสูตรที่คุณแก้ไข

เมื่อฉันทำbrew log icu4cมีเพียง 3-4 ผลลัพธ์เท่านั้น ไม่พูดถึง 62.1 แฮชที่คุณใช้ด้านบนไม่ทำงานเช่นกัน พวกเขาลบ 62 หรือไม่
โนอาห์

2
ก่อนอื่นคุณควรทำgit -C (brew --repo homebrew/core) fetch --unshallowเพื่อให้แน่ใจว่าคุณมีประวัติการชงอย่างเต็มรูปแบบ
โนอาห์

44
ดราม่ามากมายสำหรับการอัพเกรดเส้นด้าย
Eric Walker

4
นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉันขอบคุณ! ในกรณีของปัญหาคือแพคเกจ ffmpeg icu4cซึ่งผมถือว่าติดตั้งรุ่นที่ใหม่กว่า ไม่อัปเดตอัปเกรด Brew ทำงานหรือติดตั้งใหม่เชื่อมโยงสร้าง php จากแหล่งที่มา
gedijedi

5
ในกรณีของฉันฉันได้จำเป็น v63 icu4c ดังนั้นที่เกี่ยวข้องกระทำการเช็คเอาต์คือbc0c97952453ff6afc146aa3a706e9902aba4300 คำสั่ง git คือgit checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbแล้วbrew switch 63.1
nahuelhds

39

ฉันมีปัญหาเดียวกันหลังจากอัปเกรดmacOSเป็นเวอร์ชัน10.13.6แล้ว ฉันวิ่งcomposerและphpสั่งไม่ได้ หลังจากทำการวิจัยอยู่พักหนึ่งแล้วลองใช้วิธีแก้ไขปัญหาต่าง ๆ ที่โพสต์ออนไลน์ติดตั้ง php ใหม่โดยใช้homebrewงาน

brew reinstall php@7.1

เพิ่มเมื่อวันที่ 14 มีนาคมตามความคิดเห็นของ Ryan

รับรุ่นที่คุณใช้อยู่ในขณะนี้โดยเรียกใช้php -vและรับสูตรที่ถูกต้อง (ซึ่งคุณสามารถค้นหาได้ที่นี่: https://formulae.brew.sh/formula/php ) เพื่อแทนที่@7.1ในคำสั่งด้านบน


8
ผมได้รับข้อผิดพลาดเดียวกันทำงานnodeหลังจาก MacOS อัพเกรด10.14.2, brew reinstall nodeเป็นตั๋วสำหรับฉันเกินไป
gnmerritt

ฉันเริ่มได้รับข้อผิดพลาดนี้หลังจากติดตั้งแพ็คเกจใหม่ด้วยการชง ทำการbrew upgradeแก้ไขให้ฉัน
ซามูไรแจ็ค

1
brew reinstall phpอาจสิ้นสุดการติดตั้งเวอร์ชันอื่นเป็นเวอร์ชันปัจจุบัน คุณอาจต้องระบุรุ่นที่ใช้php@7.1
Ryan

3
คุณไม่สามารถเรียกใช้เวอร์ชั่นปัจจุบันได้php -vหาก php ของคุณใช้งานไม่ได้: p
gingerCodeNinja

1
@gingerCodeNinja มันเป็นความจริงบางทีนี่อาจช่วย: สำหรับ Mac OS, ไปที่เทอร์มินัลและเรียกใช้echo $PATH(ถ้าคุณมีphp, คุณควรเห็นบางสิ่งเช่นนี้/usr/local/opt/php@7.2/bin) : นี่เป็นวิธีหนึ่งที่จะทราบว่าเวอร์ชันใดที่ใช้อยู่ในปัจจุบัน
Arun Karnati

33

เรียกใช้npm versionและดูว่าคุณเห็นข้อผิดพลาดเดียวกัน

brew upgrade npmถ้าเป็นเช่นนั้นปรับรุ่น 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

เครดิต


15

นี้แก้ไขให้ฉัน:

brew upgrade node

1
สิ่งนี้ใช้ได้สำหรับฉันเช่นกัน ฉันไม่เคยตรวจสอบอย่างเต็มที่ แต่ฉันเชื่อว่าชงเพิ่งแก้ไขการอ้างอิงเช่นกันในขณะที่อัพเกรดโหนด สิ่งนี้ให้ความรู้สึกที่มีอยู่มากมายเมื่อเทียบกับการอัพเกรดการผลิต
hendrikbeck

1
ดูเหมือนว่ากรณีที่คล้ายกัน> 'ชงติดตั้งโหนด' ไม่ได้ช่วยฉันหลังจากเปลี่ยนไปใช้ Catalina
23919

9

เพียงbrew remove phpและไม่ได้ทำงานหรือไม่brew install php brew reinstall phpทางออกของฉันคือ:

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

ตอนนี้php -vให้ฉัน:

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

5

ดูเหมือนว่าเป็นไปไม่ได้ที่จะเชื่อมโยงการicu4cใช้งานbrewหลังจากอัปเดต OS X ล่าสุด ซึ่งทำให้สิ่งต่าง ๆ น่าสนใจยิ่งขึ้น ทางออกเดียวที่ฉันพบว่าทำงานให้ฉันได้:

  1. ดาวน์โหลดและรวบรวมicu4c62.1 ถึง/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. ลิงก์ libs:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. ตั้งอยู่DYLD_LIBRARY_PATHใน~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include

1
ฉันใช้ PHP 7.1 และนี่เป็นสิ่งเดียวที่ทำงานให้ฉัน
WebTigers

ในกรณีของฉันฉันต้องการรุ่น 64.2 ดังนั้นฉันจึงดาวน์โหลดจากgithub.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm


2

ฉันมีปัญหาเพราะ PHP เวอร์ชัน 7.3 (7.3) ของฉันคาดว่าจะเป็น icu4c 63 และชงจะติดตั้ง 64 เท่านั้น

https://stackoverflow.com/a/55828190/2000947ช่วยฉันติดตั้ง 63


1
หลังจากค้นหาไปสักพักนี่เป็นสิ่งที่ช่วยฉันได้ ขอบคุณ
jarchuleta

2

สำหรับฉันbrew reinstall nodejsแก้ไขปัญหานี้ - ปัญหาของฉันเกิดจากการรัน Elixir / Phoenix ดังนั้นไม่ใช่เฉพาะ PHP ฉันคิดว่ามันเกิดจากการbrew install postgresติดตั้งใหม่ แต่ไม่ได้ช่วยอะไร ฉันได้รับมาจากnpmคำสั่ง


2

brew update && brew upgrade ทำงานให้ฉัน


ยินดีต้อนรับสู่ SO! การทำงานร่วมกันของคุณยินดีต้อนรับ ในกรณีนี้มีคำถามอีก 15 คำถามดังนั้นจึงเป็นจุดที่ดีที่จะแสดงข้อดีของคุณ
David García Bodego

1

แทนที่จะติดตั้งเวอร์ชันเก่าของicu4cphp ที่เก่ากว่า (precompiled) สามารถลิงก์ไปได้ดีกว่าที่จะคอมไพล์ php เก่าอีกครั้งเพื่อเชื่อมโยงไปยังไลบรารีล่าสุด

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

สิ่งนี้จะสร้าง php และเชื่อมโยงไปยังไลบรารีใหม่ ฉันพบว่าใช้งานreinstallไม่ได้ การติดตั้งใหม่สำลักเมื่อโฟลเดอร์ปลายทางมีอยู่แล้ว

ฉันทำbrew link --force php@7.2เพื่อสิ่งแวดล้อมด้วย


พยายามนี้ แต่ไม่มีการปรับปรุง brew switch icu4c 62.1อย่างไรก็ตามคำสั่งของ Grey Black นั้นใช้ได้กับฉันแล้ว
เจมี่เบิร์ช

1

คำตอบของ Leland ใช้ได้สำหรับฉัน แต่ฉันต้องเปลี่ยนขั้นตอนที่ 4 และ 6 เป็น:

4) การชำระเงินคอมไพล์ -B icu4c-62.1 575eb4b

6) ชงติดตั้งสูตร / icu4c.rb ใหม่


1

เพื่อปรับลดรุ่นฉันต้องคอมไพล์ใหม่จากแหล่งที่มา (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

นี่คือสิ่งที่ใช้งานได้ในที่สุดสำหรับฉัน

brew reinstall postgres

หลังจากใช้คำสั่งข้างต้นคุณอาจต้องเรียกใช้

brew postgresql-upgrade-database

เพื่อเข้าถึงข้อมูลก่อนหน้าของคุณ


หลังจากลองทั้งหมดสิ่งนี้ใช้ได้สำหรับฉันเท่านั้น
Kripalu Sar

0

มีข้อผิดพลาดนี้เช่นกันหลังจากติดตั้ง php 7.3 ฉันได้แก้ไขการอัปเกรดเพียงเวอร์ชันเก่าของ php (5.6 และ 7.0 ไม่ใช่จาก repos อย่างเป็นทางการ)

ผู้ดูแลได้รวบรวม php เวอร์ชั่นใหม่เทียบกับ icu4c ปัจจุบัน

ในกรณีของฉัน PHP 7 ได้จาก 0.31 ถึง 0.33 และปัญหาได้รับการแก้ไข


นี่ไม่ใช่คำตอบอื่น ๆ หรือไม่?
JJ เพื่อความโปร่งใสและโมนิก้า

IMO ไม่ใช่ คำตอบหนึ่งที่พูดถึงเกี่ยวกับการคอมไพล์ใหม่และสิ่งที่ฉันต้องทำคือ "อัพเดต"
David Fernández Rafael

ฉันได้รับข้อผิดพลาดนี้เช่นกันหลังจากอัปเกรดจาก repo ที่ไม่เป็นทางการ แต่ชงการอัพเกรดโหนดแก้ไข
user3685048


-1

ในกรณีของฉันฉันติดตั้งแพคเกจทั้งหมดที่ติดตั้ง Homebrew

$ brew list | xargs brew reinstall

หลังจากนั้นฉันเริ่มติดตั้งรุ่นที่ฉันต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.