परिचय: प्रत्येक Mac डेवलपर का परिचित दर्द
\n\nआपने Homebrew के माध्यम से Node.js को अपडेट किया, अपनी पसंदीदा PHP स्क्रिप्ट चलाई — और अचानक आपको यह मन को झकझोर देने वाला संदेश दिखाई देता है:
\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शांत रहें, बस शांत रहें! यदि आप इस पृष्ठ पर आए हैं, तो इसका मतलब है कि आप इस त्रुटि का सामना करने वाले पहले या अंतिम डेवलपर नहीं हैं। Stack Overflow पर इस प्रश्न को हजारों बार देखा गया है, और यह उचित भी है: समस्या Homebrew के माध्यम से Node.js स्थापित या अपडेट करने के बाद ICU4C (International Components for Unicode for C) लाइब्रेरी के संस्करणों के टकराव के कारण उत्पन्न होती है।
\n\nइस ट्यूटोरियल में, मैं आपको त्रुटि को ठीक करने के तीन कार्यशील तरीके दिखाऊंगा, इसके मूल कारण की व्याख्या करूंगा, और उपयोगी सुझाव दूंगा ताकि आप यह संदेश फिर कभी न देखें। चलिए शुरू करते हैं!
\n\ndyld: Library not loaded त्रुटि क्यों होती है?
\n\nइसे ठीक करने में कूदने से पहले, आइए कारणों को समझें। इससे आपको macOS और Homebrew के पारिस्थितिकी तंत्र को बेहतर ढंग से समझने में मदद मिलेगी।
\n\nICU4C क्या है और इसमें PHP का क्या संबंध है?
\n\nICU4C यूनिकोड, अंतर्राष्ट्रीयकरण और स्थानीयकरण के समर्थन के लिए एक लाइब्रेरी है। PHP इसका उपयोग mb_convert_encoding(), intl एक्सटेंशन और अन्य जैसे कार्यों के लिए करता है। Homebrew कई पैकेजों के लिए एक निर्भरता के रूप में ICU4C स्थापित करता है, जिसमें PHP और Node.js शामिल हैं।
त्रुटि की ओर ले जाने वाली घटनाओं की श्रृंखला
\n\n- \n
- आप
brew install nodeयाbrew upgrade nodeके माध्यम से Node.js स्थापित या अपडेट करते हैं। \n - Node.js को ICU4C के एक विशिष्ट संस्करण (जैसे, 62.x) की आवश्यकता होती है। \n
- Homebrew ICU4C को एक नए संस्करण (जैसे, 63.x या 64.x) में अपडेट करता है। \n
- पुरानी लाइब्रेरी
libicui18n.62.dylibहटा दी जाती है। \n - PHP, जो संस्करण 62 के साथ संकलित किया गया था, आवश्यक लाइब्रेरी नहीं ढूंढ पाता — और त्रुटि के साथ क्रैश हो जाता है। \n
सीधे शब्दों में कहें तो: PHP "अतीत" में रह गया, जबकि लाइब्रेरीज़ पहले से ही "भविष्य" में हैं।
\n\nविधि 1: त्वरित समाधान — ICU4C को पुनः लिंक करना (शुरुआती लोगों के लिए अनुशंसित)
\n\nयह सबसे सरल और तेज़ तरीका है, जो 90% मामलों में समस्या का समाधान करता है।
\n\nचरण 1: ICU4C का वर्तमान संस्करण जांचें
\n\nटर्मिनल खोलें और निष्पादित करें:
\n\nbrew list --versions icu4c\n\nआपको कुछ इस तरह दिखाई देगा icu4c 63.1 या 64.2। संस्करण याद रखें — यह काम आएगा।
चरण 2: ICU4C को PHP से पुनः लिंक करें
\n\nपुनः लिंक करने के लिए कमांड निष्पादित करें:
\n\nbrew link --force icu4c\n\nयदि आपको कोई चेतावनी दिखती है कि संस्करण मेल नहीं खाते — तो घबराएं नहीं। यह सामान्य है। फिर PHP को पुनरारंभ करें:
\n\nwhich php\nphp -v\n\nयदि त्रुटि गायब हो गई है — तो आपने अच्छा किया! यदि नहीं — तो अगली विधि पर जाएं।
\n\nचरण 3: वैकल्पिक विकल्प — बलपूर्वक पुनः लिंक करना
\n\nयदि उपरोक्त कमांड काम नहीं करता है, तो प्रयास करें:
\n\nbrew reinstall icu4c\nbrew link --overwrite icu4c\n\nयह लाइब्रेरी को पुनः स्थापित करेगा और सभी लिंक को अपडेट करेगा।
\n\nविधि 2: Homebrew के माध्यम से PHP को पुनः स्थापित करना (उन लोगों के लिए जो सफाई पसंद करते हैं)
\n\nयदि पुनः लिंक करने से मदद नहीं मिली — तो इसका मतलब है कि आपका PHP ICU4C के पुराने संस्करण के लिए "सिला" गया है। सबसे अच्छा समाधान PHP को पुनः स्थापित करना है।
\n\nचरण 1: PHP के वर्तमान संस्करण को हटाएं
\n\nbrew uninstall php\n\nयदि आपके पास PHP के कई संस्करण हैं (जैसे, 7.4 और 8.0), तो सभी को हटा दें:
\n\nbrew uninstall php@7.4 php@8.0\n\nचरण 2: Homebrew कैश साफ़ करें
\n\nbrew cleanup\n\nचरण 3: PHP को फिर से स्थापित करें
\n\nbrew install php\n\nया, यदि आपको कोई विशिष्ट संस्करण चाहिए:
\n\nbrew install php@8.1\n\nचरण 4: कार्यक्षमता जांचें
\n\nजांचने के लिए एक सरल PHP स्क्रिप्ट लिखें:<