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.