Como corrigir dyld: Library not loaded: libicui18n.62.dylib no Mac após instalar Node via Brew

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: quando o PHP para de fazer amizade com o Homebrew

\n\n

Você já passou pela situação em que tudo funcionava perfeitamente e, de repente, seu script PHP favorito exibe um erro de dar arrepios? Se você é desenvolvedor no macOS e instalou recentemente o Node.js via Homebrew, com certeza já viu essa mensagem assustadora:

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

Não entre em pânico! Isso não é o fim do mundo, mas sim um conflito de versões da biblioteca ICU4C (International Components for Unicode for C). Essa situação é tão comum que no Stack Overflow essa pergunta já acumulou milhares de visualizações. Hoje vamos entender por que isso acontece e, principalmente, como corrigir de uma vez por todas.

\n\n

Por que o erro libicui18n.62.dylib ocorre?

\n\n

Vamos entender a mecânica. A ICU4C é uma biblioteca para suporte a Unicode usada pelo PHP para trabalhar com internacionalização (funções como intl, mbstring e outras). Quando você instala o PHP via Homebrew, ele vincula-se a uma versão específica do ICU4C que estava atual no momento da instalação.

\n\n

O problema surge quando você instala (ou atualiza) o Node.js via Brew. O Node.js também depende do ICU4C, e o Brew pode atualizar essa biblioteca para uma versão mais nova, removendo a antiga. Como resultado, o PHP fica com um "link morto" para o arquivo libicui18n.62.dylib, que já não existe mais. Daí o erro:

\n\n
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
\n\n

Na prática, é um clássico conflito de dependências. A boa notícia é que a solução existe e é bem simples.

\n\n

Soluções: do simples ao definitivo

\n\n

Solução 1: Religar o ICU4C (correção rápida)

\n\n

A maneira mais rápida é "lembrar" ao PHP onde a biblioteca está agora. O Homebrew armazena a versão atual do ICU4C em outro local, mas podemos criar um link simbólico.

\n\n
    \n
  1. Primeiro, descubra qual versão do ICU4C está instalada:
  2. \n
\n\n
brew list --versions icu4c
\n\n

Você verá algo como icu4c 72.1 (o número da versão pode variar).

\n\n
    \n
  1. Agora, crie o diretório que o PHP procura e faça o symlink:
  2. \n
\n\n
sudo mkdir -p /usr/local/opt/icu4c/lib\nsudo ln -s /usr/local/Cellar/icu4c/72.1/lib/libicui18n.dylib /usr/local/opt/icu4c/lib/libicui18n.62.dylib
\n\n

Importante: Substitua 72.1 pela sua versão do ICU4C. Se a versão for 73.0, o comando será:

\n\n
sudo ln -s /usr/local/Cellar/icu4c/73.0/lib/libicui18n.dylib /usr/local/opt/icu4c/lib/libicui18n.62.dylib
\n\n

Teste se o PHP funciona:

\n\n
php -v
\n\n

Se aparecer a versão do PHP sem erros — parabéns, você conseguiu! Mas essa é uma solução temporária. Na próxima atualização do ICU4C, o link vai quebrar novamente.

\n\n

Solução 2: Reinstalar o PHP via Brew (recomendado)

\n\n

A abordagem mais correta é forçar o PHP a ser recompilado com a versão atual do ICU4C. Isso leva um pouco mais de tempo, mas resolve o problema de raiz.

\n\n
    \n
  1. Primeiro, remova a versão atual do PHP (se existir):
  2. \n
\n\n
brew uninstall php
\n\n
    \n
  1. Em seguida, reinstale o PHP, indicando explicitamente que deve usar a versão atual do ICU4C:
  2. \n
\n\n
brew install php
\n\n

O Homebrew baixará a versão mais recente do ICU4C e recompilará o PHP com os links corretos. Após a instalação, verifique:

\n\n
php -v\nphp -m | grep intl
\n\n

O módulo intl deve aparecer na lista. Caso contrário, talvez seja necessário ativá-lo manualmente no php.ini, mas geralmente o Brew faz isso automaticamente.

\n\n

Solução 3: Instalar uma versão específica do ICU4C

Blogs

Book Recommendations