Saya tidak mengalami masalah dalam menginstal Symfony 2.2.x menggunakan Komposer, saya selalu menyalin versi stabil di http://symfony.com/download .
composer create-project symfony/framework-standard-edition myproject/ 2.2.1
(Saya telah menginstal Komposer secara global)
Penasaran tentang 2.3.0-RC1 Saya pikir ini akan berjalan lancar:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1
Tetapi dimatikan karena kesalahan berikut:
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].
Apakah saya perlu mengubah file composer.json?
Pembaruan Solusi
Saya kehilangan ekstensi intl php yang menyediakan lib-icu
Sangat mudah, instal dan konfigurasi ekstensi intl. Mulai PHP 5.3, ekstensi Intl didistribusikan secara default, tetapi beberapa distribusi, seperti MAMP, tidak memiliki Intl sehingga Anda harus mendapatkannya. Saya menggunakan PEAR :
Langkah saya:
- Instal ekstensi Intl (dikelola oleh PECL):
$ pear install pecl/intl
- Anda mungkin harus menambahkan saluran pecl ke pir terlebih dahulu. - Jika Anda menggunakan MAMP dan belum pernah bekerja dengan pear / pecl check lullabot's membantu entri blog ; MAMP tidak dikirimkan dengan sumber php, jadi Anda harus mengunduh sumber untuk versi php Anda dan memindahkan sumber ke
/Applications/MAMP/bin/php/php[version]/include/php
(seperti yang tercakup dalam posting blog) - PEAR tidak dapat menemukan php.ini saya, jadi saya harus menambahkan
extension=intl.so
ke php.ini secara manual . Di MAMP Anda dapat mengedit php.ini dengan mudah dengan masuk ke File> Edit Template> php. [Versi] .ini
Garis komando:
- Saat menggunakan Composer atau Symfony's Console CLI, Anda juga memerlukan Intl dan karena
php
CLI biasanya menggunakan yang berbeda,php.ini
Anda juga ingin menambahkan arahan ekstensi di sana. Untuk menemukan php.ini CLI Anda cukup lakukan$ php -i |grep php\.ini
untuk menemukan path file dan tambahkanextension=intl.so
ke php.ini itu juga. - Untuk memeriksa apakah Intl terinstal, Anda dapat melakukan
$ php -m
untuk memeriksa modul yang tersedia.
php
symfony
composer-php
Mark Fox
sumber
sumber
Jawaban:
perbarui ekstensi php-intl Anda , dari sanalah kesalahan icu berasal!
periksa ekstensi diaktifkan dan dikonfigurasi dengan benar di php.ini juga.
(petunjuk: php-cli terkadang menggunakan php.ini yang berbeda)
php.ini
periksa
phpinfo()
DAN Andaphp -m
dari terminal Anda jika ekstensi telah berhasil diaktifkan.Periksa versi intl Anda saat ini dari php dengan:
perhatian: tidak diperlukan lagi ( sementara itu symfony 2.3 telah dirilis )
tambahkan bendera stabilitas minimum @dev atau @rc ke dependensi Anda seperti ini:
Stabilitas default dalam komposer adalah stabil dimana cabang symfony 2.3 saat ini tidak (@rc). Baca lebih lanjut tentang bendera stabilitas di sini .
sumber
INTL::…
gagal. Tapi, saya bisa melihat melalui phpinfo () di browser bahwa Intl diinstal dan versi ICU adalah 49.x. Namun, Komposer masih gagal dengan pesan kesalahan yang sama.php -m
saya TIDAK melihat intl. Saya tahu ini berfungsi di server web, tetapi tidak dikenali di Command Line. Jadi… saya harus menambahkannya ke Command Line?php -m
masih tidak mengenali dari CLI?Banyak aplikasi hanya akan mendukung lokal "en" dan tidak memerlukan kemampuan terjemahan atau php-intl. Jika ini adalah Anda, atau Anda tidak dapat menginstal php-intl di server Anda, Anda dapat secara eksplisit menambahkan symfony / icu ~ 1.0 ke file
composer.json
. 1.0 tidak membutuhkan php-intl, sedangkan 1.1+ membutuhkan.Jika Anda tidak membutuhkan fitur terjemahan:
Tanpa deklarasi ini dan mencoba menginstal symfony / symfony 2.3 Komposer dapat mencoba menginstal symfony / icu ~ 1.2 yang akan meminta Anda menginstal php-intl.
Hal ini secara eksplisit dibahas secara lebih luas dalam dokumen Symfony Intl Component di bawah "Masalah ICU dan Penerapan".
sumber
"require":{"symfony/symfony": "v2.3.3"}}
hasil: ´Memuat repositori composer dengan informasi paket Menginstal dependensi (termasuk require-dev) - Menginstal psr / log (1.0.0) Mengunduh: 100% - Menginstal twig / twig (v1.13.2) Mengunduh: 100% - Menginstal doktrin / umum (2.3.0) Mengunduh: 100% - Menginstal symfony / symfony (v2.3.3) Mengunduh: 100% - Menginstal symfony / icu (v1.0.0) Mengunduh: 100% Menulis file kuncicomposer.lock
dibagi antara lingkungan dengan versi berbeda (atau tidak adanya) Intl.Solusi terkait masalah ini atau yang serupa dapat ditemukan di sini: Masalah ICU dan Penerapan
Perilaku komposer harus cerdas dalam memilih komponen icu yang tepat:
Seharusnya (secara teoritis) tidak ada kesalahan saat menginstal symfony 2.3. tanpa ekstensi intl.
Tapi Anda bisa terjebak ketika lingkungan pengembangan Anda berbeda dari server produksi Anda seperti yang disebutkan dalam artikel ini:
Ketika Anda tidak memiliki akses root ke server produksi Anda, Anda dapat memperbaikinya seperti yang disebutkan dalam artikel ini. (mengubah composer.json)
Semoga informasi tambahan ini membantu karena membantu saya untuk kasus khusus ini dengan lingkungan yang berbeda.
sumber
Mac OS Mavericks hadir dengan PHP 5.4.17 tanpa intl. Untuk mendapatkan ini, Anda harus mengikuti langkah-langkah berikut:
sumber
Saya tahu bahwa jawaban ini mungkin bukan jawaban yang benar untuk masalah orang ini, tetapi itu adalah solusi untuk masalah saya dengan judul yang sama. Saya dapat memperbaiki masalah ini untuk diri saya sendiri dengan mengaktifkan ekstensi intl di php.ini dan mengupgrade komposer.
Pengupgrade komposer.
Hapus komentar dari baris ini (di php.ini):
Dan juga hapus komentar dua baris di bawah ini [intl] di (php.ini):
Dan tentu saja, restart apache2. :)
Informasi tambahan:
Jika Anda menggunakan mac dan menginstal php dengan Homebrew ikuti langkah-langkah berikut:
(PHP 5,4)
(PHP 5,5)
Mulai ulang apache.
sumber
Solusi yang lebih baik adalah memperbaiki composer.json Anda ke versi yang diperlukan oleh server produksi. Pertama, tentukan versi ICU di server: 1 2
Kemudian perbaiki komponen Icu di file composer.json Anda ke versi yang cocok:
Setel versi ke "1.0 " jika server tidak memasang ekstensi intl; "1.1. " Jika server dikompilasi dengan ICU 4.2 atau lebih rendah.
Akhirnya, lari
di mesin pengembangan Anda, uji secara ekstensif dan terapkan lagi. Penginstalan dependensi sekarang akan berhasil.
sumber