Kesalahan pemasangan komposer - membutuhkan ext_curl ketika sebenarnya diaktifkan

188

Saya mencoba memasang Facebook PHP SDK dengan Composer. Ini yang saya dapatkan

$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

    Problem 1
        - Installation request for facebook/php-sdk dev-master -> satisfiable by facebook/php-sdk[dev-master].
        - facebook/php-sdk dev-master requires ext-curl * -> the requested PHP extension curl is missing from your system.

Masalahnya adalah, saya memiliki ekstensi curl diaktifkan (tidak dikomentari di php.ini). Ketika saya lari phpinfo(), katanya diaktifkan. Satu-satunya petunjuk yang saya miliki adalah ketika saya berlari $ php -m, garis 'ikal' hilang tetapi saya tidak tahu harus berbuat apa.

Saya memiliki wamp 2.4 di Win8 dan saya menjalankan komposer di cmd.exe.

Michal Artazov
sumber
5
Jalankan "php -i | grep php.ini" untuk memastikan Anda mengedit file ini untuk PHP yang benar?
Danack
3
Komposer akan meminta ekstensi PHP yang sedang berjalan, yang merupakan versi baris perintah dari PHP, bukan versi server. Jika BAHWA PHP tidak memiliki ekstensi curl, itu tidak akan berfungsi. Itu mungkin merupakan kekurangan dari implementasi Composer saat ini, karena mengambil paket jarak jauh tidak memerlukan ekstensi, dan server yang digunakan untuk mengambil paket tidak boleh server yang digunakan untuk menjalankan sesuatu.
Sven

Jawaban:

390

Ini disebabkan karena Anda tidak memiliki perpustakaan php5-curl diinstal di sistem Anda,

Pada Ubuntu, cukup jalankan kode baris di bawah ini, dalam kasus Anda di Xamp lihat dokumentasi Xamp

sudo apt-get install php5-curl

Bagi siapa saja yang menggunakan php7.0

sudo apt-get install php7.0-curl

Bagi yang menggunakan php7.1

sudo apt-get install php7.1-curl

Bagi mereka yang menggunakan php7.2

sudo apt-get install php7.2-curl

Bagi yang menggunakan php7.3

sudo apt-get install php7.3-curl

Atau cukup jalankan perintah di bawah ini untuk menginstal menurut versi Anda:

sudo apt-get install php-curl
Adriano Rosa
sumber
10
Penulis pertanyaan tampaknya menjalankan Windows. Windows tidak didasarkan pada Debian.
huertanix
3
@huertanix meskipun sistem pengguna sedang berjalan, kesalahan pertanyaan adalah karena pustaka curl tidak diinstal pada sistem yang dapat menyebabkan kesalahan komposer, apa yang saya tunjukkan hanyalah contoh untuk memperjelas pengguna bagaimana cara memperbaikinya.
Adriano Rosa
3
di ubuntu 16 dengan php 5.6 Anda harus menggunakan sudo apt-get install php5.6-curl
barak
4
Diselesaikan dengan "sudo apt-get install php-curl"
vnchopra
2
php-curl adalah paket meta yang membuat solusi independen dari versi php. Jadi "sudo apt-get install php-curl" adalah jawaban universal
Maks
113

Ini berfungsi untuk saya: http://ubuntuforums.org/showthread.php?t=1519176

Setelah menginstal komposer menggunakan perintah curl -sS https://getcomposer.org/installer | phpjalankan jalankan sudo apt-get updatekemudian instal ulang dengan sudo apt-get install php5-curl. Maka proses instalasi komposer harus bekerja sehingga Anda akhirnya dapat menjalankan php composer.phar installuntuk mendapatkan dependensi yang tercantum dalam file composer.json Anda.

pengguna2998553
sumber
Saya selalu menghindari Komposer karena metode instal, ini menegaskan keengganan saya.
MrYellow
@ MrYellow jadi manajer paket / dependensi apa yang Anda gunakan? Apa yang salah dengan metode pemasangan Composer?
Wirone
26

Seperti Danack katakan dalam komentar, ada 2 file php.ini. Saya menghapus komentar baris dengan ekstensi ikal di satu di folder Apache, yang merupakan php.ini yang digunakan oleh server web.

Komposer, di sisi lain, menggunakan php untuk konsol yang merupakan cerita yang sangat berbeda. File Php.ini untuk program itu bukan yang ada di folder Apache tetapi ada di folder PHP dan saya harus batalkan komentar pada baris di dalamnya juga. Kemudian saya menjalankan instalasi lagi dan itu OK.

Michal Artazov
sumber
26

di php7 run misalnya:

> sudo apt-get install php-curl
> sudo apt-get install php-mbstring

untuk setiap ekstensi yang hilang. Kemudian:

> sudo apt-get update

dan akhirnya (dalam folder root proyek):

> composer install
Grigoreas P.
sumber
11

Saya mengalami masalah yang sama mencoba menginstal Dropbox SDK.

CURL memang diaktifkan di sistem saya tetapi ini dimaksudkan oleh php.ini di folder wamp \ bin \ apache.

Saya hanya perlu secara manual mengedit php.ini yang terletak di wamp \ bin \ php, batalkan komentar pada extension=php_curl.dllbaris, restart Wamp dan itu bekerja dengan sempurna.

Mengapa ada 2 php.ini dan hanya satu yang digunakan masih menjadi misteri bagi saya ...

Semoga ini bisa membantu seseorang!

pengguna3497737
sumber
Satu php.ini digunakan oleh Apache di dalam WAMP dan yang lain digunakan ketika memulai server web PHP bawaan seperti ini: $ php -S localhost:8000di konsol
Yahya Uddin
Terima kasih kawan, ini bekerja dengan sempurna !! Tidak mengerti mengapa php_curl diperiksa dan dengan ;di file php.ini ...
w3spi
10

Saya mengalami masalah ini setelah memutakhirkan ke PHP5.6. Jawaban saya sangat mirip dengan jawaban Adriano, kecuali saya harus menjalankan:

sudo apt-get install php5.6-curl

Perhatikan "5.6". Menginstal php5-curl tidak berhasil untuk saya.

Aaron Wright
sumber
5

Menurut https://github.com/composer/composer/issues/2119 Anda dapat memperluas lokal Anda composer.jsonuntuk menyatakan bahwa ia menyediakan ekstensi (yang sebenarnya tidak dilakukan - itu sebabnya Anda tidak boleh mempublikasikan paket Anda secara publik, hanya saja gunakan secara internal).

Sven
sumber
Aneh, bagaimana cara kerjanya? Apakah maksud Anda bahwa komposer memuat ekstensi itu sendiri?
Pacerier
Komposer pertama membangun daftar hal-hal yang harus ada, dan kemudian mencari hal-hal yang memenuhi daftar persyaratan ini. Ekstensi PHP yang dipasang secara sederhana adalah entri dalam daftar yang tersedia untuk memenuhi persyaratan. Paket yang providemerupakan paket yang dinamai sama dengan ekstensi PHP juga akan memenuhi persyaratan, karena pada tahap membandingkan hal-hal yang diperlukan dan yang sudah ada, ekstensi hanyalah sebuah string seperti nama paket perpustakaan.
Sven
3

Aktifkan di php 7 coba perintah di bawah ini

sudo apt-get install php7.0-curl
Sujal Patel
sumber
2

Saya mengalami masalah serupa ketika mencoba membuat komposer untuk menginstal beberapa dependensi. Ternyata .dll versi Wamp saya datang dengan memiliki konflik, saya kira, dengan 64 bit Windows.

Url ini telah memperbaiki dll keriting: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Gulir ke bawah ke bagian yang mengatakan: Fixed Curl Extensions.

Saya mengunduh "php_curl-5.4.3-VC9-x64.zip". Saya hanya menimpa dll di dalam direktori wamp / bin / php / php5.4.3 / ext dengan dll yang ada di file zip dan komposer bekerja lagi.

Saya menjalankan 64 bit Windows 8.

Semoga ini membantu.

Gratus D.
sumber
2

Bagi siapa saja yang mengalami masalah ini di Windows saya tidak dapat menemukan jawaban saya di google sama sekali. Saya baru saja mencoba menjalankan komposer yang memerlukan ext-curl dan ini berhasil. Atau tambahkan berikut ini di file composer.json Anda:

"require": {
"ext-curl": "^7.3"
}
Emily
sumber
1

jika menggunakan wamp, buka:

wamp\bin\php\php.5.x.x\php.ini temukan: ;extension=php_curl.dll hapus (;)

Kadir Hadile
sumber
1

Saya memiliki Archlinux dengan php 7.2, yang memiliki Curl terintegrasi, jadi tidak ada jumlah konfigurasi yang akan membuat Composer melihat ext-curl, yang dapat dilihat dan digunakan PHP dengan senang hati. Cara mengatasinya adalah menggunakan Komposer dengan --ignore-platform-reqs.

mis. pembaruan komposer --ignore-platform-reqs

Referensi = https://github.com/composer/composer/issues/1426

Onyx
sumber
1

coba instal php5-curl dengan menggunakan cuplikan di bawah ini.

sudo apt-get install php5-curl

jika tidak berhasil coba kode di bawah ini saya yakin itu akan berfungsi dengan baik.

sudo apt-get install php-curl

bagi saya itu berhasil ... semua yang terbaik :)

Ksaroz Shrestha
sumber
sudo apt-get install php-curl, bekerja untuk saya di ubuntu
maks
0

Dalam kasus saya, saya pindah dari PHP5 ke PHP7 dan saya mendapatkan kesalahan ini, Cukup buka /bin/php/php7/php.ini, lalu batalkan ekstensi ekstensi = php_curl.dll dan mulai ulang server Anda, jalankan kembali instalasi komposer Anda.

Inoubli
sumber
0

Tidak yakin mengapa jawaban dengan perintah Linux akan mendapatkan begitu banyak suara untuk pertanyaan terkait Windows, tapi tetap saja ...

Jika phpinfo()menunjukkan Curl sebagai diaktifkan, namun php -mTIDAK, itu berarti Anda mungkin juga memiliki Curl php-cli.ini. jalankan php -idan lihat mana file ini dimuat. Jika berbeda, bedakan dan pantulkan serta perbedaan dalam file CLI ini. Maka Anda harus baik untuk pergi.

Btw unduh dan gunakan Git Bash, bukan cmd.exe!

delboy1978uk
sumber