संगीतकार के माध्यम से सिम्फनी 2.3.x स्थापित करते समय कामेच्छा-आईसीयू निर्भरता के साथ समस्याएं


112

मुझे सिम्फनी 2.2.x को कंपोज़र का उपयोग करने में कोई समस्या नहीं है, मैंने हमेशा http://symfony.com/download पर स्थिर संस्करण की प्रतिलिपि बनाई है ।

composer create-project symfony/framework-standard-edition myproject/ 2.2.1

(मेरे पास कंपोजर विश्व स्तर पर स्थापित है)
2.3.0-RC1 के बारे में उत्सुक मुझे लगा कि यह आसानी से हो जाएगा:

composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1

लेकिन निम्नलिखित त्रुटियों से बंद हो गया:

Your requirements could not be resolved to an installable set of packages.

Problem 1
    - symfony/icu v1.2.0-RC1 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
    - symfony/icu v1.1.0-RC1 requires lib-icu >=3.8 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
    - symfony/symfony v2.3.0-RC1 requires symfony/icu >=1.0,<2.0 -> satisfiable by symfony/icu[v1.1.0-RC1, v1.2.0-RC1].
    - Installation request for symfony/symfony 2.3.* -> satisfiable by symfony/symfony[v2.3.0-RC1].

क्या मुझे composer.json फ़ाइल को ट्वीक करने की आवश्यकता है?


समाधान अद्यतन

मुझे php intl एक्सटेंशन याद आ रहा था जो कि lib-icu प्रदान करता है

इतना आसान, स्थापित करें और इंटल एक्सटेंशन को कॉन्फ़िगर करें। PHP 5.3 के रूप में Intl एक्सटेंशन डिफ़ॉल्ट रूप से वितरित किया जाता है, लेकिन कुछ वितरण, जैसे MAMP, में Intl नहीं है, इसलिए आपको इसे प्राप्त करने की आवश्यकता होगी। मैंने PEAR का उपयोग किया :

मेरे कदम:

  • Intl एक्सटेंशन स्थापित करें (PECL द्वारा अनुरक्षित): $ pear install pecl/intl - आपको पहले नाशपाती में pecl चैनल जोड़ना होगा।
  • यदि आप MAMP का उपयोग करते हैं और कभी नाशपाती / pecl चेक के साथ काम नहीं किया है, तो लोलाबोट की मददगार ब्लॉग पोस्ट ; MAMP, php स्रोत के साथ जहाज नहीं करता है, इसलिए आपको अपने php संस्करण के लिए स्रोत को डाउनलोड करना होगा और स्रोत को /Applications/MAMP/bin/php/php[version]/include/php(ब्लॉग पोस्ट में शामिल) के रूप में स्थानांतरित करना होगा
  • PEAR को मेरा php.ini नहीं मिला, इसलिए मुझे php.ini को मैन्युअल रूप से जोड़ना पड़ा extension=intl.so। MAMP में आप फ़ाइल> एडिट टेम्प्लेट> php। [संस्करण] .ini पर जाकर आसानी से php.ini को संपादित कर सकते हैं

कमांड लाइन:

  • संगीतकार या सिम्फनी के कंसोल CLI का उपयोग करते समय आपको Intl की भी आवश्यकता होगी और चूंकि phpCLI आमतौर पर एक भिन्न का उपयोग करता है, php.iniआप वहां एक्सटेंशन निर्देश भी जोड़ना चाहते हैं। अपनी CLI की php.ini $ php -i |grep php\.iniखोजने के लिए बस फ़ाइल पथ की खोज करें और extension=intl.soउस php.ini को भी जोड़ें ।
  • यह जाँचने के लिए कि क्या Intl स्थापित है, आप $ php -mउपलब्ध मॉड्यूल की जाँच करने के लिए कर सकते हैं ।

आप किस ओएस का उपयोग कर रहे हैं? तब मैं आपके इंटल एक्सटेंशन को अपडेट करने के बारे में जानकारी प्रदान कर सकता हूं।
निकोलाई फ्रोइलिच

PHP 5.2.x संगतता के लिए pecl / intl का उपयोग न करें। PHP 5.3 के रूप में, Intl एक कोर एक्सटेंशन है।
जेरामे विएलेन्डेंट

2
@ JérômeVieilledent ऐसा लगता है कि मौजूदा MAMP वितरण Intl को बंडल नहीं करता है, जो आपको केवल PECL का उपयोग करने का विकल्प देता है ताकि वह इसे php.net/manual/en/intl.installation.php
मार्क

जवाबों:


118

अपने php-intl एक्सटेंशन को अपडेट करें , यही वह स्थान है जहाँ icu त्रुटि आती है!

sudo aptitude install php5-intl                 // i.e. ubuntu
brew install icu4c                              // osx

एक्सटेंशन को सक्षम करें और php.ini aswell में ठीक से कॉन्फ़िगर किया गया है।

(संकेत: php-cli कभी-कभी एक अलग php.ini का उपयोग करता है)

php.ini

extension=intl.so       ; *nix
extension=php_intl.dll  ; windows

[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING

अपने phpinfo()और php -mअपने टर्मिनल से जाँच करें कि क्या विस्तार से सफलतापूर्वक सक्षम किया गया है।

Php से अपने वर्तमान intl संस्करणों की जाँच करें:

Intl::getIcuVersion();
Intl::getIcuDataVersion();

ध्यान: अब और जरूरत नहीं है ( सिम्फनी 2.3 इस बीच जारी किया गया है )

कृपया इस तरह अपनी निर्भरता के लिए न्यूनतम स्थिरता ध्वज @dev या @rc जोड़ें:

composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.*@dev 

कंपोजर में डिफ़ॉल्ट स्थिरता स्थिर है जो सहानुभूति 2.3 शाखा वर्तमान में नहीं है (यह @ आर्क) है। अधिक स्थिरता के झंडे यहां पढ़ें ।


बढ़िया लेख। संगीतकार दस्तावेज ने मुझे कुछ से कम छोड़ दिया अगर कुछ भी स्थिरता झंडा खेलने में आ रहा था।
मार्क फॉक्स

मैंने PEAR / PECL के माध्यम से php-intl स्थापित किया। किसी कारणवश INTL::…असफल हो जाता है। लेकिन, मैं ब्राउज़र में phpinfo () के माध्यम से देख सकता हूं कि Intl स्थापित है और ICU संस्करण 49.x है। हालाँकि, कंपोज़र अभी भी उसी त्रुटि संदेश के साथ विफल है।
मार्क फॉक्स

कौन सा ऑपरेटिंग सिस्टम? उदाहरण के लिए ubuntu पर "sudo एप्टीट्यूड स्थापित php5-intl"। एक्सटेंशन php.ini में सक्षम है, कमांडलाइन से php -m के साथ दिखाई दे रहा है?
निकोलाई फ्रोइलिच

1
मैक OSX 10.7.5 - जब मैं चलाता php -mहूं तो मुझे इंटल दिखाई नहीं देता है। मुझे पता है कि यह वेबसर्वर पर काम करता है, लेकिन यह कमांड लाइन पर मान्यता प्राप्त नहीं है। तो ... मुझे इसे कमांड लाइन में जोड़ना होगा?
मार्क फॉक्स

मैं Homebrew के माध्यम से स्थापित है, लेकिन php -mअभी भी CLI से पहचान नहीं है?
मार्क फॉक्स

21

कई एप्लिकेशन केवल "एन" लोकेल का समर्थन करेंगे और अनुवाद क्षमताओं या php-intl की कोई आवश्यकता नहीं होगी। यदि यह आप है, या आप अपने सर्वर पर php-intl स्थापित नहीं कर सकते हैं, तो आप स्पष्ट रूप से अपने लिए सिम्फनी / icu ~ 1.0 जोड़ सकते हैं composer.json। 1.0 को php-intl की आवश्यकता नहीं है, जबकि 1.1+ करता है।

यदि आपको अनुवाद सुविधाओं की आवश्यकता नहीं है:

$ php bin/composer.phar require symfony/icu ~1.0

इस घोषणा के बिना और सिम्फनी / सिम्फनी को स्थापित करने की कोशिश करने के लिए 2.3 कम्पोज़र सिम्फनी / आईसीयू ~ 1.2 स्थापित करने का प्रयास कर सकता है, जिसे आपको php-intl स्थापित करने की आवश्यकता होगी।

यह स्पष्ट रूप से "ICU और परिनियोजन समस्याओं" के अंतर्गत Symfony Intl Component के डॉक्स में अधिक व्यापक रूप से कवर किया गया है ।


1
इसके लिए धन्यवाद। यह बेतुका है कि Symfony2 एक ऐसी सुविधा पर अधिष्ठापन बंद कर देता है जो वैकल्पिक होनी चाहिए और कई वातावरणों में स्थापित नहीं है।
एक्यरा

क्षमा करें, लेकिन यह सच नहीं है। सिम्फनी 2.3 को स्थापित करने से कॉन्फ़िगरेशन को आत्मनिरीक्षण किया जाएगा और सही icu- घटक निर्धारित करेगा। यह बंद नहीं होगा।
ट्विनी

POC कंपोज़र "require":{"symfony/symfony": "v2.3.3"}}.json : परिणाम: पैकेज जानकारी के साथ repLading कंपोज़र रिपॉजिटरी स्थापित करना निर्भरता (आवश्यकता-देव सहित) - Psr / log (1.0.0) इंस्टॉल करना: 100% - इंस्टाल करना ट्विग / ट्विग (v1.13.2) डाउनलोडिंग: 100% - स्थापित सिद्धांत / आम (2.3.0)
डाउनलोडिंग

1
डॉक्स में बताया गया है, समस्या तब उत्पन्न होती है जब composer.lockइंटल के विभिन्न संस्करणों (या अनुपस्थिति) के साथ वातावरण के बीच साझा की जाती है।
तमलिन

इसके लिए धन्यवाद! अपनी उंगलियों को पार करते हुए मैं अपने सिम्फनी 2 प्रोजेक्ट को एक क्लाइंट के लिए चला सकता हूं, जो अभी भी GoDaddy पर है
मैट

15

इस या इसी तरह की समस्याओं के बारे में एक समाधान यहां पाया जा सकता है: आईसीयू और तैनाती समस्याएं

संगीतकार का व्यवहार सही इकु-घटक का चयन करने में बुद्धिमान होना चाहिए:

  • symfony / icu 1.0। *: जब intl एक्सटेंशन उपलब्ध नहीं है
  • symfony / icu 1.1। *: जब intl को ICU 4.0 या उच्चतर के साथ संकलित किया जाता है
  • symfony / icu 1.2। *: जब intl को ICU 4.4 या उच्चतर के साथ संकलित किया जाता है

सिम्फनी 2.3 स्थापित करने में कोई त्रुटि नहीं होनी चाहिए (सैद्धांतिक रूप से)। बिना किसी विस्तार-विस्तार के।

लेकिन आप फंस सकते हैं जब आपका विकास-वातावरण आपके उत्पादन-सर्वर से अलग होता है जैसे इस लेख में बताया गया है:

  • विकास मशीनें आईसीयू 4.4 या उच्चतर के साथ संकलित की जाती हैं, लेकिन सर्वर संकलित होता है> 4.4 से कम आईसीयू संस्करण के साथ
  • intl एक्सटेंशन विकास मशीनों पर उपलब्ध है, लेकिन सर्वर पर नहीं।

जब आपके पास अपने उत्पादन-सर्वर तक कोई रूट-एक्सेस नहीं है, तो आप इसे इस लेख में बताए अनुसार ठीक कर सकते हैं। (संगीतकार से जुड़कर)

आशा है कि इस अतिरिक्त जानकारी ने मदद की क्योंकि इसने मुझे इस विशेष मामले के लिए विभिन्न वातावरणों के साथ मदद की।


9

मैक ओएस मावेरिक्स PHP 5.4.17 के साथ इंटल के बिना आता है। इसे पाने के लिए, आपको उन चरणों का पालन करना होगा:

brew install icu4c
sudo pecl install intl 
The path to the ICU libraries and headers is: /usr/local/opt/icu4c/
Edit /etc/php.ini and add extension=intl.so to the end.

6

मुझे पता है कि यह उत्तर इस व्यक्ति की समस्या का सही उत्तर नहीं हो सकता है, लेकिन यह एक ही शीर्षक के साथ मेरी समस्या का समाधान था। मैं php.ini में intl एक्सटेंशन को सक्षम करके और संगीतकार को अपग्रेड करके अपने लिए इस समस्या को ठीक करने में सक्षम था।

संगीतकार का उन्नयन।

php composer.phar self-update

इस लाइन से टिप्पणी निकालें (php.ini में):

extension=php_intl.dll

और नीचे दिए गए इन दो पंक्तियों पर टिप्पणी भी करें [intl] in (php.ini):

[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING

और निश्चित रूप से Apache2 को पुनरारंभ करें। :)

अतिरिक्त जानकारी:

यदि होमब्रे के साथ आपके मैक और इंस्टॉल किए गए php को इन चरणों का पालन करें:

(PHP 5.4)

$ brew install php54-intl

(PHP 5.5)

$ brew tap josegonzalez/php
$ brew tap homebrew/dupes
$ brew install josegonzalez/php/php55-intl
$ sudo apachectl restart

फिर से शुरू करें।


1
ऐसा लगता है कि यह विंडोज फिक्स है ;-)
मार्क फॉक्स

1
हां, मैं विंडोज़ का उपयोग कर रहा हूं, हालांकि, यह "विंडोज़ फिक्स" नहीं है, बल्कि इसका पीएचपी कॉन्फिगर और कंपोजर अपडेट फिक्स है। समान चरणों को एक लिनक्स या मैक बॉक्स पर ले जाने की आवश्यकता हो सकती है।
लेटन एवरसन

सही बात। शायद आपको यह उल्लेख करना चाहिए कि आप किस php / apache वितरण का उपयोग कर रहे हैं। आपके मामले में intl एक्सटेंशन को बंडल किया गया है और बस सक्षम करने की आवश्यकता है, वही डिस्ट्रो पैकेज का उपयोग करने वाले किसी भी व्यक्ति के लिए यह बहुत अच्छी खबर है।
मार्क फॉक्स

1
अच्छी बात है मार्क फॉक्स। यहां हमें किसी की भी जरूरत है। मैं एक विंडोज़ 8 बॉक्स पर apachefriends से XAMPP स्टैक का उपयोग कर रहा हूं। (संस्करण 1.8)
लेटन एवरसन

1
मेरे लिए इसने XAMPP का उपयोग करके इसे ठीक किया। एक्सटेंशन पहले से ही सक्षम था, लेकिन [intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING
d0001

5

एक बेहतर समाधान यह है कि आप अपने कंपोजर को ठीक करें। प्रोडक्शन सर्वर द्वारा आवश्यक संस्करण पर जाएं। सबसे पहले, सर्वर पर ICU संस्करण का निर्धारण करें: 1 2

$ php -i | grep ICU
ICU version => 4.2.1

फिर एक मिलान संस्करण में अपने कंपोजर.जेसन फ़ाइल में इकु घटक को ठीक करें:

"require: {
    "symfony/icu": "1.1.*"
}

संस्करण को "1.0" पर सेट करें, अगर सर्वर में इंटल एक्सटेंशन स्थापित नहीं है; "1.1। " यदि सर्वर को ICU 4.2 या निम्न के साथ संकलित किया गया है।

अंत में, भागो

php composer.phar update symfony/icu

अपने विकास मशीन पर, बड़े पैमाने पर परीक्षण करें और फिर से तैनात करें। आश्रितों की स्थापना अब सफल होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.