맥 PHP 7.4의 icu4c 관련 에러 해결

,

커맨드라인에서 php -v를 실행하니 다음과 같은 에러가 나왔습니다. 아파치로 돌리는 PHP에서는 문제가 없었습니다.

dyld[98153]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicuio.72.dylib
  Referenced from: <4AD83D22-6A2C-36D9-A969-3E31572816AB> /opt/homebrew/Cellar/[email protected]/7.4.33_2/bin/php
  Reason: tried: '/opt/homebrew/opt/icu4c/lib/libicuio.72.dylib' (no such file), 
  '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/icu4c/lib/libicuio.72.dylib' (no such file), 
  '/opt/homebrew/opt/icu4c/lib/libicuio.72.dylib' (no such file), 
  '/usr/local/lib/libicuio.72.dylib' (no such file), 
  '/usr/lib/libicuio.72.dylib' (no such file, not in dyld cache), 
  '/opt/homebrew/Cellar/icu4c/73.2/lib/libicuio.72.dylib' (no such file), 
  '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/icu4c/73.2/lib/libicuio.72.dylib' (no such file), 
  '/opt/homebrew/Cellar/icu4c/73.2/lib/libicuio.72.dylib' (no such file), 
  '/usr/local/lib/libicuio.72.dylib' (no such file), 
  '/usr/lib/libicuio.72.dylib' (no such file, not in dyld cache)

해결책 한줄 요약

1. PHP 8로 업데이트하면 해결됩니다.

2. PHP 7.4를 유지해야 한다면, 아래 명령으로 PHP 7.4를 7.4.33_4 이상으로 업그레이드합니다. 저는 원래 7.4.33_2였습니다.

brew upgrade [email protected]

일단 제가 PHP 패키지와 icu4c의 관계까지 파고 들 생각까지는 없어서 해결은 여기에서 멈췄습니다.

좀더 자세한 내용

에러는 icu4c라는 라이브러리의 버전이 72에서 73으로 업데이트되면서 발생한 것입니다. 업데이트가 언제 된 것인지는 모르겠습니다. 에러 메시지가 libicuio.72.dylib이라는 파일을 찾지 못해서 온갖 곳을 뒤졌다는 내용입니다.

실제로 /opt/homebrew/opt/icu4c/lib로 가 보면 버전 73.2가 설치돼 있습니다.

그런데 제가 icu4c를 72에서 73으로 업데이트할 법한 일을 한 기억이 없습니다.

저의 맥 운영체제는 아직 Ventura에 머물고 있습니다. brew ugrade도 실행하지 않았습니다.

검색하다 보니 어떤 사람은 nodejs를 지워서 문제가 발생한 거라고 주장합니다. 제가 최근에 brew로 설치한 nodejs를 지우기는 했습니다. 그러나 nodejs를 다시 설치해도 문제가 해결되지는 않았습니다.

여하간 버전 72으로 다운그레이드를 시도했는데, brew로 icu4c 버전 72를 설치할 손쉬운 방법은 없어 보였습니다.

그래서 버전 73의 모든 라이브러리 파일을 72로 이름을 바꿔서 심볼릭 링크를 걸었지만 해결되지 않았습니다. 아래와 같이 새로운 에러 메시지가 나타났습니다.

dyld[61176]: Symbol not found: __ZN6icu_7210DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE
  Referenced from: <E283BE8C-1A02-32FC-A82F-57E16E041E46> /opt/homebrew/Cellar/[email protected]/7.4.33_2/bin/php
  Expected in:     <AC7AD526-D2A3-32FF-86A1-E6D7C801314D> /opt/homebrew/Cellar/icu4c/73.2/lib/libicui18n.73.2.dylib

그래서 결국 앞서 한줄 요약에서 설명했듯이 PHP 7.4를 업그레이드해 해결한 것입니다.

참고: [email protected] no longer works after icu4c 72 upgrade · Issue #120854 · Homebrew/homebrew-core (github.com)

카테고리 글 목록 👉

,

대표글

댓글 남기기