Introducción: El dolor familiar de todo desarrollador en Mac
\n\nActualizaste Node.js mediante Homebrew, ejecutaste tu script PHP favorito — y de repente ves este mensaje que hiela la sangre:
\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\n¡Calma, solo calma! Si llegaste a esta página, significa que no eres el primero ni el último desarrollador en enfrentarse a este error. En Stack Overflow esta pregunta ha acumulado miles de visitas, y con razón: el problema surge debido a un conflicto de versiones de la biblioteca ICU4C (International Components for Unicode for C) después de instalar o actualizar Node.js mediante Homebrew.
\n\nEn este tutorial te mostraré tres formas funcionales de corregir el error, explicaré su origen y te daré recomendaciones útiles para que nunca más veas este mensaje. ¡Allá vamos!
\n\n¿Por qué ocurre el error dyld: Library not loaded?
\n\nAntes de lanzarnos a corregirlo, analicemos las causas. Esto te ayudará a entender mejor el ecosistema de macOS y Homebrew.
\n\n¿Qué es ICU4C y qué tiene que ver con PHP?
\n\nICU4C es una biblioteca para soporte de Unicode, internacionalización y localización. PHP la utiliza para funciones como mb_convert_encoding(), la extensión intl y otras. Homebrew instala ICU4C como dependencia para muchos paquetes, incluyendo PHP y Node.js.
Cadena de eventos que lleva al error
\n\n- \n
- Instalas o actualizas Node.js mediante
brew install nodeobrew upgrade node. \n - Node.js requiere una versión específica de ICU4C (por ejemplo, 62.x). \n
- Homebrew actualiza ICU4C a una nueva versión (por ejemplo, 63.x o 64.x). \n
- La biblioteca antigua
libicui18n.62.dylibse elimina. \n - PHP, que fue compilado con la versión 62, no puede encontrar la biblioteca necesaria — y falla con el error. \n
En pocas palabras: PHP se quedó "en el pasado", mientras que las bibliotecas ya están "en el futuro".
\n\nMétodo 1: Solución rápida — reenlazar ICU4C (recomendado para principiantes)
\n\nEsta es la forma más simple y rápida, que en el 90% de los casos resuelve el problema.
\n\nPaso 1: Verifica la versión actual de ICU4C
\n\nAbre la Terminal y ejecuta:
\n\nbrew list --versions icu4c\n\nVerás algo como icu4c 63.1 o 64.2. Recuerda la versión — te será útil.
Paso 2: Reenlaza ICU4C con PHP
\n\nEjecuta el comando para reenlazar:
\n\nbrew link --force icu4c\n\nSi ves una advertencia de que las versiones no coinciden — no te asustes. Es normal. Luego reinicia PHP:
\n\nwhich php\nphp -v\n\nSi el error desapareció — ¡bien hecho! Si no — pasa al siguiente método.
\n\nPaso 3: Opción alternativa — reenlace forzado
\n\nSi el comando anterior no funcionó, prueba:
\n\nbrew reinstall icu4c\nbrew link --overwrite icu4c\n\nEsto reinstalará la biblioteca y actualizará todos los enlaces.
\n\nMétodo 2: Reinstalar PHP mediante Homebrew (para quienes prefieren la limpieza)
\n\nSi el reenlace no ayudó — significa que tu PHP está "compilado" para una versión antigua de ICU4C. La mejor solución es reinstalar PHP.
\n\nPaso 1: Elimina la versión actual de PHP
\n\nbrew uninstall php\n\nSi tienes varias versiones de PHP (por ejemplo, 7.4 y 8.0), elimínalas todas:
\n\nbrew uninstall php@7.4 php@8.0\n\nPaso 2: Limpia la caché de Homebrew
\n\nbrew cleanup\n\nPaso 3: Instala PHP nuevamente
\n\nbrew install php\n\nO, si necesitas una versión específica:
\n\nbrew install php@8.1\n\nPaso 4: Verifica el funcionamiento
\n\nEscribe un script PHP simple para comprobar:<