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.


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

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.


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.


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

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!


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.


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).


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

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.


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"
}

1

jika menggunakan wamp, buka:

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


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


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 :)


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.


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!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.