Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

 brew info icu4c
 brew switch icu4c <version>

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

Ответ 2

  Примечание - это обновит вашу версию PHP.

У меня была такая же проблема. Обновление Homebrew и затем очистка помогли мне. Эта ошибка, вероятно, обнаружилась для меня из-за несоответствия версий пакета. Ни одно из вышеперечисленных решений не устранило мою ошибку, но выполнили следующие команды homebrew.

brew upgrade

Предостережение - это обновит все ваши пакеты brew. Если вы хотите обновить только определенные пакеты, убедитесь, что они указаны.

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

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

а затем

brew cleanup

Ответ 3

Оказывается, мне, как @Grey Black, пришлось фактически установить v62.1 из icu4c. Больше ничего не сработало.

Однако brew switch icu4c 62.1 работает, только если вы установили 62.1 в прошлом. Если у вас нет больше работы. Доморощенный не облегчает установку предыдущих версий формул.

Вот как я это сделал:

  1. Сначала нам нужен глубокий клон Homebrew репо. Это может занять некоторое время: 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 . Очистите ваш измененный рецепт.

Ответ 4

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

brew reinstall [email protected]

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

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

Ответ 5

Я на самом деле очень удивлен, что это решение еще не было представлено, и я чувствую, что это самое простое решение.

Перейдите на GitHub, найдите версию brewfile, которая соответствует версии icu4c которая вам нужна, и получите сырую версию файла (перейдите по ссылкам выше и нажмите " View File затем " Raw).

Тогда просто переустановите варево с этого URL.

Например, версия 62.1:

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

Ответ 6

Запустите npm version и посмотрите, видите ли вы ту же ошибку.

Если это так, обновите версию своего узла. 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

кредиты

Ответ 7

Это исправило это для меня:

brew upgrade node

Ответ 8

Просто brew remove php и brew install php не получилось, и brew reinstall 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 )

Ответ 9

В MacOS Mojave единственный способ, которым я мог это исправить, был с brew upgrade

Ответ 10

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

brew uninstall [email protected]
brew install --build-from-source [email protected]

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

Я также сделал brew link --force [email protected] для своей среды.

Ответ 11

Похоже, невозможно связать icu4c с помощью brew после последнего обновления OS X. Что делает вещи более интересными. Единственное решение, которое я нашел для меня:

  1. Загрузите и скомпилируйте icu4c 62.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

Ответ 12

Ответ Леланда сработал для меня, но мне пришлось изменить шаги 4 и 6 на:

4) git checkout -B icu4c-62.1 575eb4b

6) заварить переустановить формулу /icu4c.rb

Ответ 13

У меня были проблемы, потому что моя версия PHP (7.3) ожидала icu4c 63, а brew установит только 64.

fooobar.com/questions/17888977/... помог мне установить 63.

Ответ 14

Чтобы понизить версию, мне пришлось перекомпилировать из исходного кода (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

Ответ 15

Получил эту ошибку тоже после установки php 7.3. У меня было решено обновить только мои старые версии php (5.6 и 7.0, а не из официальных репозиториев).

Сопровождающие скомпилировали новые версии php для текущей версии icu4c.

В моем случае PHP 7 поднялся с 0,31 до 0,33, и проблема была решена.

Ответ 16

У меня работает brew reinstall icu4c

Ответ 17

Для меня brew reinstall nodejs исправил это - моя проблема была с запуском Elixir/Phoenix, поэтому не специфичной для PHP, я думаю, что это было вызвано brew install postgres, но переустановка, которая не помогла. Я получал это от команд npm.