كيفية إصلاح خطأ dyld مع libicui18n.62.dylib بعد تثبيت Node عبر Brew على Mac

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: الألم المألوف لكل مطور على Mac

\n\n

كنت تقوم بتحديث Node.js عبر Homebrew، ثم قمت بتشغيل سكريبت PHP المفضل لديك — وفجأة ترى هذه الرسالة المروعة:

\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

هدوء، فقط هدوء! إذا وصلت إلى هذه الصفحة، فأنت لست أول ولا آخر مطور يواجه هذا الخطأ. على Stack Overflow، حصد هذا السؤال آلاف المشاهدات، وليس من دون سبب: المشكلة تنشأ بسبب تعارض إصدارات مكتبة ICU4C (International Components for Unicode for C) بعد تثبيت أو تحديث Node.js عبر Homebrew.

\n\n

في هذا الدليل، سأعرض لكم ثلاث طرق عملية لإصلاح الخطأ، وسأشرح جذره، وسأقدم توصيات مفيدة حتى لا تروا هذه الرسالة مرة أخرى. هيا بنا!

\n\n

لماذا يحدث خطأ dyld: Library not loaded؟

\n\n

قبل أن نبدأ في الإصلاح، دعنا نفهم الأسباب. سيساعدك هذا على فهم أفضل للنظام البيئي لـ macOS و Homebrew.

\n\n

ما هي ICU4C وما علاقتها بـ PHP؟

\n\n

ICU4C هي مكتبة لدعم Unicode، التدويل والتوطين. يستخدمها PHP للعمل مع دوال مثل mb_convert_encoding()، وامتداد intl وغيرها. يقوم Homebrew بتثبيت ICU4C كاعتماد للعديد من الحزم، بما في ذلك PHP و Node.js.

\n\n

سلسلة الأحداث المؤدية إلى الخطأ

\n\n
    \n
  1. تقوم بتثبيت أو تحديث Node.js عبر brew install node أو brew upgrade node.
  2. \n
  3. يتطلب Node.js إصداراً معيناً من ICU4C (مثل 62.x).
  4. \n
  5. يقوم Homebrew بتحديث ICU4C إلى إصدار جديد (مثل 63.x أو 64.x).
  6. \n
  7. تتم إزالة المكتبة القديمة libicui18n.62.dylib.
  8. \n
  9. PHP، الذي تم تجميعه مع الإصدار 62، لا يمكنه العثور على المكتبة المطلوبة — ويتعطل مع الخطأ.
  10. \n
\n\n

ببساطة: PHP بقي "في الماضي"، بينما المكتبات أصبحت "في المستقبل".

\n\n

الطريقة 1: حل سريع — إعادة ربط ICU4C (موصى به للمبتدئين)

\n\n

هذه هي الطريقة الأسهل والأسرع، والتي تحل المشكلة في 90% من الحالات.

\n\n

الخطوة 1: تحقق من الإصدار الحالي لـ ICU4C

\n\n

افتح الطرفية (Terminal) ونفّذ:

\n\n
brew list --versions icu4c
\n\n

سترى شيئاً مثل icu4c 63.1 أو 64.2. تذكر الإصدار — ستحتاجه.

\n\n

الخطوة 2: أعد ربط ICU4C مع PHP

\n\n

نفّذ الأمر لإعادة الربط:

\n\n
brew link --force icu4c
\n\n

إذا رأيت تحذيراً بأن الإصدارات غير متطابقة — لا تقلق. هذا طبيعي. ثم أعد تشغيل PHP:

\n\n
which php\nphp -v
\n\n

إذا اختفى الخطأ — أحسنت! إذا لم يختفِ — انتقل إلى الطريقة التالية.

\n\n

الخطوة 3: بديل — إعادة الربط القسري

\n\n

إذا لم يعمل الأمر أعلاه، جرب:

\n\n
brew reinstall icu4c\nbrew link --overwrite icu4c
\n\n

سيؤدي هذا إلى إعادة تثبيت المكتبة وتحديث جميع الروابط.

\n\n

الطريقة 2: إعادة تثبيت PHP عبر Homebrew (لمن يحبون النظافة)

\n\n

إذا لم تساعد إعادة الربط — فهذا يعني أن PHP الخاص بك "مُخيط" تحت الإصدار القديم من ICU4C. أفضل حل هو إعادة تثبيت PHP.

\n\n

الخطوة 1: احذف الإصدار الحالي من PHP

\n\n
brew uninstall php
\n\n

إذا كان لديك عدة إصدارات من PHP (مثل 7.4 و 8.0)، احذفها جميعاً:

\n\n
brew uninstall php@7.4 php@8.0
\n\n

الخطوة 2: نظف ذاكرة التخزين المؤقت لـ Homebrew

\n\n
brew cleanup
\n\n

الخطوة 3: أعد تثبيت PHP من جديد

\n\n
brew install php
\n\n

أو، إذا كنت بحاجة إلى إصدار معين:

\n\n
brew install php@8.1
\n\n

الخطوة 4: تحقق من قابلية التشغيل

\n\n

اكتب سكريبت PHP بسيط للتحقق:

المدونات

توصيات الكتب