dyld: библиотека не загружена: /usr/local/opt/icu4c/lib/libicui18n.62.dylib ошибка запуска php после установки узла с brew на Mac - PullRequest
0 голосов
/ 18 декабря 2018

Я установил узел с помощью 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, но проблемасохраняется

Ответы [ 14 ]

0 голосов
/ 29 января 2019

Вместо того, чтобы устанавливать старую версию icu4c, на которую может ссылаться старый (предварительно скомпилированный) php, лучше перекомпилировать старый php для ссылки на более позднюю библиотеку.

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

Это будетсобрать php и связать его с новой библиотекой.Я обнаружил, reinstall не совсем работает;новая установка захлебнулась, когда папка назначения уже существовала.

Я также сделал brew link --force php@7.2 для своей среды.

0 голосов
/ 20 января 2019

Оказывается, мне, как @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 . Очистите ваш измененный рецепт.

Добавлена ​​пара дополнительных заметок, спасибо @Noah за улов

0 голосов
/ 14 января 2019

В моем случае это произошло из-за того, что icu4c был обновлён до версии 63, но мой локально установленный образ postgres по-прежнему ссылался на icu4c 62.1.Поэтому мне пришлось изменить используемую версию icu4c:

 brew info icu4c
 brew switch icu4c <version>

Где version - установленная версия, возвращаемая info

0 голосов
/ 19 декабря 2018

У меня возникла такая же проблема после обновления macOS до версии 10.13.6.Я не могу запустить команды composer и php.После небольшого исследования и опробования различных решений, размещенных в Интернете, переустановка php с использованием homebrew сработала.

brew reinstall php@7.1

Добавлено 14 марта на основе комментария Райана

получить версию, которую вы сейчас используете, запустив php -v и получитьправильные формулы (которые вы можете найти здесь: https://formulae.brew.sh/formula/php) для замены @7.1 в приведенной выше команде.

...