Błąd instalacji kompozytora - wymaga ext_curl, gdy jest faktycznie włączony


188

Próbuję zainstalować Facebook PHP SDK z Composer. Właśnie to dostaję

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

Problem w tym, że mam włączone rozszerzenie curl (niepomocowane w php.ini). Kiedy uruchamiam phpinfo(), mówi, że jest włączony. Jedyną wskazówką, jaką mam, jest to, że kiedy biegnę$ php -m , brakuje linii „curl”, ale nie wiem, co z tym zrobić.

Mam wamp 2.4 na Win8 i uruchamiam kompozytora w cmd.exe.


5
Uruchom „php -i | grep php.ini”, aby upewnić się, że edytujesz poprawny plik ini dla PHP?
— Danack

3
Kompozytor zapyta aktualnie uruchomionego PHP o rozszerzenia, które są wersją PHP wiersza poleceń, a nie wersją serwerową. Jeśli TO PHP nie ma rozszerzenia curl, nie będzie działać. Jest to prawdopodobnie wada obecnej implementacji Composer, ponieważ pobieranie zdalnych pakietów nie wymaga rozszerzeń, a serwer używany do pobierania pakietów nie może być serwerem używanym do wykonywania różnych rzeczy.
— Sven,

Odpowiedzi:


390

Jest to spowodowane tym, że nie masz biblioteki php5-curl zainstalowanej w systemie,

Na Ubuntu wystarczy po prostu uruchomić poniższy kod linii, w twoim przypadku na Xampie zajrzyj do dokumentacji Xampa

sudo apt-get install php5-curl

Dla każdego, kto używa php7.0

sudo apt-get install php7.0-curl

Dla tych, którzy używają php7.1

sudo apt-get install php7.1-curl

Dla tych, którzy używają php7.2

sudo apt-get install php7.2-curl

Dla tych, którzy używają php7.3

sudo apt-get install php7.3-curl

Lub po prostu uruchom poniższe polecenie, aby zainstalować według wersji:

sudo apt-get install php-curl

10
Wydaje się, że autor pytania korzysta z systemu Windows. Windows nie jest oparty na Debianie.
— huertanix

3
@huertanix pomimo działania systemu użytkownika, błąd polega na tym, że biblioteka curl nie jest zainstalowana w systemie, co może powodować błąd kompozytora. Zwracam uwagę, że to tylko przykład, aby wyjaśnić użytkownikowi, jak to naprawić.
— Adriano Rosa

3
na Ubuntu 16 z php 5.6 powinieneś użyć sudo apt-get install php5.6-curl
— barak

4
Rozwiązany dzięki temu „sudo apt-get install php-curl”
— vnchopra

2
php-curl to meta-pakiet, który uniezależnia rozwiązanie od wersji php. Zatem „sudo apt-get install php-curl” to uniwersalna odpowiedź
— Max

113

To zadziałało dla mnie: http://ubuntuforums.org/showthread.php?t=1519176

Po zainstalowaniu kompozytora za pomocą polecenia curl -sS https://getcomposer.org/installer | phpwystarczy uruchomić, a sudo apt-get updatenastępnie ponownie zainstalować curl za pomocą sudo apt-get install php5-curl. Następnie proces instalacji kompozytora powinien działać, abyś mógł w końcu uruchomić, php composer.phar installaby uzyskać zależności wymienione w pliku composer.json.


Zawsze unikałem Composer z powodu metody instalacji, co potwierdza moją niechęć.
— MrYellow

@MrYellow, więc jakiego menedżera pakietów / zależności używasz? Co jest nie tak z metodą instalacji Composer?
— Wirone,

26

Jak powiedział Danack w komentarzach, istnieją 2 pliki php.ini. Odkomentowałem wiersz z rozszerzeniem curl w tym w folderze Apache, którym jest serwer php.ini.

Z drugiej strony kompozytor używa php do konsoli, co jest zupełnie inną historią. Plik php.ini dla tego programu nie znajduje się w folderze Apache, ale znajduje się w folderze PHP i musiałem również odkomentować wiersz w nim. Potem ponownie uruchomiłem instalację i wszystko było w porządku.


26

na php7 uruchom na przykład:

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

dla każdego brakującego rozszerzenia. Następnie:

> sudo apt-get update

i na koniec (w folderze głównym projektu):

> composer install

11

Zetknąłem się z tym samym problemem, próbując zainstalować Dropbox SDK.

CURL rzeczywiście został włączony w moim systemie, ale oznaczało to php.ini w folderze wamp \ bin \ apache.

Po prostu musiałem ręcznie edytować plik php.ini znajdujący się w pliku wamp \ bin \ php, odkomentować extension=php_curl.dlllinię, ponownie uruchomić Wampa i działało idealnie.

Dlaczego są te 2 php.ini i tylko jedna jest używana, wciąż jest dla mnie tajemnicą ...

Mam nadzieję, że komuś to pomoże!


Jeden php.ini jest używany przez Apache w WAMP, a drugi jest używany podczas uruchamiania wbudowanego serwera WWW PHP w następujący sposób: $ php -S localhost:8000w konsoli
— Yahya Uddin

Dziękuję człowieku, działa idealnie !! Nie rozumiem, dlaczego php_curl jest sprawdzany iz ;plikiem php.ini ...
— w3spi

10

Miałem ten problem po aktualizacji do PHP5.6. Moja odpowiedź jest bardzo podobna do Adriano, tyle że musiałem biegać:

sudo apt-get install php5.6-curl

Zwróć uwagę na „5.6”. Instalacja php5-curl nie działała dla mnie.


5

Według https://github.com/composer/composer/issues/2119 możesz rozszerzyć swój lokalny, composer.jsonaby stwierdzić, że zapewnia on rozszerzenie (czego tak naprawdę nie robi - dlatego nie powinieneś publicznie publikować swojego pakietu, tylko użyj go wewnętrznie).


Dziwne, jak to działa? Czy masz na myśli, że kompozytor sam ładuje rozszerzenie?
— Pacerier,

Kompozytor najpierw tworzy listę rzeczy, które powinny być obecne, a następnie wyszukuje rzeczy spełniające tę listę wymagań. Zainstalowane rozszerzenia PHP to po prostu wpis na liście, który jest dostępny w celu spełnienia wymagań. Pakiety, których providepakiet o nazwie takiej samej jak rozszerzenie PHP spełniałby również wymagania, ponieważ na etapie porównywania wymaganych i istniejących rzeczy rozszerzenie jest po prostu łańcuchem, podobnie jak nazwa pakietu biblioteki.
— Sven


2

Wystąpił podobny problem, gdy próbowałem przekonać kompozytora do zainstalowania niektórych zależności. Okazuje się, że .dll, z którym przyszła moja wersja Wampa, miał, jak sądzę, konflikt z 64-bitowym Windowsem.

Ten adres URL ma poprawione dll curl: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Przewiń w dół do sekcji: Naprawiono rozszerzenia loków.

Pobrałem plik „php_curl-5.4.3-VC9-x64.zip”. Właśnie nadpisałem bibliotekę DLL w katalogu wamp / bin / php / php5.4.3 / ext biblioteką DLL, która była w pliku zip, i kompozytor znów działał.

Korzystam z 64-bitowego systemu Windows 8.

Mam nadzieję że to pomoże.


2

Dla każdego, kto napotka ten problem w systemie Windows, w ogóle nie mogłem znaleźć mojej odpowiedzi w Google. Właśnie próbowałem uruchomić kompozytora wymaga ext-curl i to zadziałało. Alternatywnie dodaj następujące informacje w pliku composer.json:

"require": {
"ext-curl": "^7.3"
}

1

jeśli używasz wampa, przejdź do:

wamp\bin\php\php.5.x.x\php.ini znajdź: ;extension=php_curl.dll usuń (;)


1

Mam Archlinuxa z php 7.2, który ma zintegrowane Curl, więc żadna ilość konfiguracji voodoo nie spowodowałaby, że Composer zobaczy ext-curl, z którym PHP może zobaczyć i pracować z radością. Obejście polega na użyciu Composer z --ignore-platform-reqs.

np. aktualizacja kompozytora --ignore-platform-reqs

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


1

spróbuj zainstalować php5-curl, używając poniższego fragmentu.

sudo apt-get install php5-curl

jeśli to nie zadziała, spróbuj poniżej kodu, jestem pewien, że będzie dobrze.

sudo apt-get install php-curl

dla mnie to działało ... wszystkiego najlepszego :)


sudo apt-get install php-curl, pracował dla mnie na Ubuntu
— max

0

W moim przypadku przeniosłem się z PHP5 na PHP7 i dostałem ten błąd, po prostu przejdź do /bin/php/php7/php.ini, następnie odkomentuj rozszerzenie = php_curl.dll i zrestartuj serwer, uruchom ponownie instalację kompozytora.


0

Nie jestem pewien, dlaczego odpowiedź na polecenia Linuksa miałaby tyle głosów na pytanie związane z Windows, ale w każdym razie ...

Jeśli phpinfo()pokazuje Curl jako włączony, ale php -mNIE, oznacza to, że prawdopodobnie też masz php-cli.ini. uruchom php -ii zobacz, który załadowany plik ini. Jeśli jest inny, różnicuj go i odzwierciedlaj oraz różnice w pliku ini CLI. Więc powinieneś być dobry.

Pobierz Btw i użyj Git Bash zamiast cmd.exe!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.