Introdução: A dor familiar de todo desenvolvedor no Mac
\n\nVocê atualizou o Node.js via Homebrew, executou seu script PHP favorito — e de repente vê esta mensagem de gelar o sangue:
\n\ndyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib\n Referenced from: /usr/local/bin/php\n Reason: image not found\n\nCalma, apenas calma! Se você chegou a esta página, significa que você não é o primeiro nem o último desenvolvedor a enfrentar este erro. No Stack Overflow, esta pergunta acumulou milhares de visualizações, e não é à toa: o problema surge devido a um conflito de versões da biblioteca ICU4C (International Components for Unicode for C) após instalar ou atualizar o Node.js via Homebrew.
\n\nNeste tutorial, mostrarei três maneiras funcionais de corrigir o erro, explicarei sua causa raiz e darei recomendações úteis para que você nunca mais veja esta mensagem. Vamos lá!
\n\nPor que ocorre o erro dyld: Library not loaded?
\n\nAntes de sair corrigindo, vamos entender as causas. Isso ajudará você a compreender melhor o ecossistema do macOS e do Homebrew.
\n\nO que é ICU4C e o que o PHP tem a ver com isso?
\n\nICU4C é uma biblioteca para suporte a Unicode, internacionalização e localização. O PHP a utiliza para funções como mb_convert_encoding(), a extensão intl e outras. O Homebrew instala o ICU4C como dependência para muitos pacotes, incluindo PHP e Node.js.
Cadeia de eventos que leva ao erro
\n\n- \n
- Você instala ou atualiza o Node.js via
brew install nodeoubrew upgrade node. \n - O Node.js requer uma versão específica do ICU4C (por exemplo, 62.x). \n
- O Homebrew atualiza o ICU4C para uma nova versão (por exemplo, 63.x ou 64.x). \n
- A biblioteca antiga
libicui18n.62.dylibé removida. \n - O PHP, que foi compilado com a versão 62, não consegue encontrar a biblioteca necessária — e falha com o erro. \n
Simplificando: o PHP ficou "no passado", enquanto as bibliotecas já estão "no futuro".
\n\nMétodo 1: Solução rápida — religação do ICU4C (recomendo para iniciantes)
\n\nEsta é a maneira mais simples e rápida, que resolve o problema em 90% dos casos.
\n\nPasso 1: Verifique a versão atual do ICU4C
\n\nAbra o Terminal e execute:
\n\nbrew list --versions icu4c\n\nVocê verá algo como icu4c 63.1 ou 64.2. Anote a versão — será útil.
Passo 2: Religue o ICU4C com o PHP
\n\nExecute o comando para religar:
\n\nbrew link --force icu4c\n\nSe você vir um aviso de que as versões não coincidem — não se assuste. Isso é normal. Em seguida, reinicie o PHP:
\n\nwhich php\nphp -v\n\nSe o erro desapareceu — parabéns! Se não — vá para o próximo método.
\n\nPasso 3: Alternativa — religação forçada
\n\nSe o comando acima não funcionou, tente:
\n\nbrew reinstall icu4c\nbrew link --overwrite icu4c\n\nIsso reinstalará a biblioteca e atualizará todos os links.
\n\nMétodo 2: Reinstalação do PHP via Homebrew (para quem gosta de limpeza)
\n\nSe a religação não ajudou — significa que seu PHP está "fixado" na versão antiga do ICU4C. A melhor solução é reinstalar o PHP.
\n\nPasso 1: Remova a versão atual do PHP
\n\nbrew uninstall php\n\nSe você tiver várias versões do PHP (por exemplo, 7.4 e 8.0), remova todas:
\n\nbrew uninstall php@7.4 php@8.0\n\nPasso 2: Limpe o cache do Homebrew
\n\nbrew cleanup\n\nPasso 3: Instale o PHP novamente
\n\nbrew install php\n\nOu, se precisar de uma versão específica:
\n\nbrew install php@8.1\n\nPasso 4: Verifique o funcionamento
\n\nEscreva um script PHP simples para testar:<