Ошибка "dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib" при запуске PHP после установки Node через Homebrew на Mac
Установил Node.js с помощью Homebrew на MacOS 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
Я попытался удалить как Node.js, так и icu4c, но проблема продолжается. Как можно решить эту проблему?
5 ответ(ов)
Обновление - как указано в некоторых комментариях, выполнение команды brew cleanup
может помочь исправить эту ошибку. Если это не помогло, попробуйте обновить по отдельности или все ваши пакеты Homebrew.
Я столкнулся с аналогичной проблемой. У меня сработало обновление Homebrew и последующая чистка. Эта ошибка, вероятно, возникла у меня из-за несоответствия версий пакетов. Ни одно из вышеуказанных решений не помогло мне, но выполнение следующих команд Homebrew сработало.
Внимание - это обновит все ваши пакеты Homebrew, включая, но не ограничиваясь, PHP. Если вы хотите обновить только определенные пакеты, убедитесь, что вы точно указываете, какие именно.
brew upgrade icu4c
brew upgrade # или обновите все пакеты
и в конце
brew cleanup
В вашем случае это произошло потому, что icu4c была обновлена до версии 63, но установленное локально изображение Postgres все еще ссылалось на icu4c версии 62.1. Поэтому вам нужно было изменить используемую версию icu4c. Для этого выполните следующие команды:
brew info icu4c
brew switch icu4c <версия>
Где <версия>
— это установленная версия, возвращенная командой info
.
Я на самом деле удивлён, что это решение ещё не было предложено, и мне кажется, что это самый простой способ.
Перейдите на GitHub, найдите версию brewfile, которая соответствует нужной вам версии icu4c
, и получите сырой вариант файла (следуйте по ссылкам выше, нажмите 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
ОБНОВЛЕНИЕ:
В более поздних версиях Homebrew может потребоваться сначала скачать файл. Если это так, выполните:
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
brew reinstall icu4c.rb
Для меня решение заключалось в следующем:
brew reinstall icu4c
Затем выполните:
gem uninstall charlock_holmes
gem install charlock_holmes
Этот подход помог решить возникшую проблему.
У меня была такая же проблема после обновления macOS
до версии 10.13.6
. Я не мог запускать команды composer
и php
. После небольших исследований и попыток различных решений, найденных в интернете, мне помогло переустановить php с помощью homebrew
.
Выполните команду:
brew reinstall [email protected]
Добавлено 14 марта на основании комментария Райана
Чтобы узнать, какую версию вы в данный момент используете, выполните команду php -v
, и выберите правильную формулу (которую можно найти здесь: https://formulae.brew.sh/formula/php), чтобы заменить @7.1
в приведенной выше команде.
nvm постоянно "забывает" Node.js в новой сессии терминала
Как установить pip на macOS или OS X?
Как санировать пользовательский ввод с помощью PHP?
Как получить полный объект в console.log() Node.js, а не '[Object]'?
Различия между Socket.IO и WebSockets