Composer-Installationsfehler - erfordert ext_curl, wenn es tatsächlich aktiviert ist

186

Ich versuche, Facebook PHP SDK mit Composer zu installieren. Das bekomme ich

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

Das Problem ist, ich habe die Curl-Erweiterung aktiviert (in php.ini nicht kommentiert). Wenn ich laufe phpinfo(), heißt es, dass es aktiviert ist. Der einzige Hinweis, den ich habe, ist, dass beim Laufen die $ php -m'Curl'-Linie fehlt, aber ich weiß nicht, was ich dagegen tun soll.

Ich habe Wamp 2.4 unter Win8 und verwende Composer in cmd.exe.

Michal Artazov
quelle
5
Führen Sie "php -i | grep php.ini" aus, um sicherzustellen, dass Sie die richtige INI-Datei für PHP bearbeiten.
Danack
3
Composer fragt das aktuell ausgeführte PHP nach den Erweiterungen. Dies ist die Befehlszeilenversion von PHP, nicht die Serverversion. Wenn DIESES PHP nicht die Curl-Erweiterung hat, funktioniert es nicht. Dies ist wahrscheinlich ein Mangel der aktuellen Implementierung von Composer, da für das Abrufen von Remote-Paketen keine Erweiterungen erforderlich sind und der zum Abrufen von Paketen verwendete Server nicht der Server sein darf, der zum Ausführen von Dingen verwendet wird.
Sven

Antworten:

385

Dies liegt daran, dass in Ihrem System keine Bibliothek php5-curl installiert ist.

Unter Ubuntu ist es einfach, den folgenden Zeilencode auszuführen. In Ihrem Fall unter Xamp sehen Sie sich die Xamp-Dokumentation an

sudo apt-get install php5-curl

Für alle, die php7.0 verwenden

sudo apt-get install php7.0-curl

Für diejenigen, die php7.1 verwenden

sudo apt-get install php7.1-curl

Für diejenigen, die php7.2 verwenden

sudo apt-get install php7.2-curl

Für diejenigen, die php7.3 verwenden

sudo apt-get install php7.3-curl

Oder führen Sie einfach den folgenden Befehl aus, um die Installation nach Ihrer Version durchzuführen:

sudo apt-get install php-curl
Adriano Rosa
quelle
10
Der Autor der Frage scheint Windows auszuführen. Windows basiert nicht auf Debian.
Huertanix
3
@huertanix Obwohl das System des Benutzers ausgeführt wird, liegt der Fragenfehler darin, dass keine Curl-Bibliothek auf dem System installiert ist, was zu Composer-Fehlern führen kann. Ich möchte nur auf ein Beispiel hinweisen, um dem Benutzer zu erläutern, wie dies behoben werden kann.
Adriano Rosa
3
bei ubuntu 16 mit php 5.6 solltest du sudo apt-get install php5.6-curl verwenden
barak
4
Gelöst mit diesem "sudo apt-get install php-curl"
vnchopra
2
PHP-Curl ist ein Meta-Paket, das die Lösung unabhängig von der PHP-Version macht. "Sudo apt-get install php-curl" ist also die universelle Antwort
Max
113

Das hat bei mir funktioniert: http://ubuntuforums.org/showthread.php?t=1519176

Nachdem Sie Composer mit dem Befehl installiert haben, führen Sie curl -sS https://getcomposer.org/installer | phpeinfach eine sudo apt-get updateCurl mit neu aus sudo apt-get install php5-curl. Dann sollte der Installationsprozess von Composer funktionieren, damit Sie endlich php composer.phar installdie Abhängigkeiten abrufen können, die in Ihrer Datei composer.json aufgeführt sind.

user2998553
quelle
Ich habe Composer aufgrund der Installationsmethode immer gemieden. Dies bestätigt meine Zurückhaltung.
MrYellow
@ MrYellow Also, welchen Paket- / Abhängigkeitsmanager verwenden Sie? Was ist falsch an der Installationsmethode von Composer?
Wirone
26

Wie Danack in Kommentaren sagte, gibt es 2 php.ini-Dateien. Ich habe die Zeile mit der Curl-Erweiterung in dem im Apache-Ordner, der vom Webserver verwendet wird, php.ini auskommentiert.

Composer hingegen verwendet PHP für die Konsole, was eine ganz andere Geschichte ist. Die Php.ini-Datei für dieses Programm befindet sich nicht im Apache-Ordner, sondern im PHP-Ordner, und ich musste auch die Zeile darin auskommentieren. Dann habe ich die Installation erneut ausgeführt und es war in Ordnung.

Michal Artazov
quelle
26

auf php7 laufen zum beispiel:

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

für jede fehlende Erweiterung. Dann:

> sudo apt-get update

und schließlich (im Stammordner des Projekts):

> composer install
Grigoreas P.
quelle
11

Beim Versuch, das Dropbox SDK zu installieren, ist dasselbe Problem aufgetreten.

CURL war zwar auf meinem System aktiviert, dies bedeutete jedoch die Datei php.ini im Ordner wamp \ bin \ apache.

Ich musste einfach die php.ini in wamp \ bin \ php manuell bearbeiten, die Zeile auskommentieren extension=php_curl.dll, Wamp neu starten und es funktionierte perfekt.

Warum es diese 2 php.ini gibt und nur eine verwendet wird, ist mir immer noch ein Rätsel ...

Hoffe, es hilft jemandem!

user3497737
quelle
Eine php.ini wird von Apache in WAMP verwendet und die andere wird verwendet, wenn der eingebaute PHP-Webserver wie folgt gestartet wird: $ php -S localhost:8000in der Konsole
Yahya Uddin
Danke Mann, es funktioniert perfekt !! Verstehe nicht, warum php_curl überprüft wird und mit einem ;in der Datei php.ini ...
w3spi
10

Ich hatte dieses Problem nach dem Upgrade auf PHP5.6. Meine Antwort ist der von Adriano sehr ähnlich, außer dass ich rennen musste:

sudo apt-get install php5.6-curl

Beachten Sie die "5.6". Die Installation von php5-curl hat bei mir nicht funktioniert.

Aaron Wright
quelle
5

Laut https://github.com/composer/composer/issues/2119 können Sie Ihr lokales Verzeichnis so erweitern composer.json, dass es die Erweiterung bereitstellt (was nicht wirklich der Fall ist - deshalb sollten Sie Ihr Paket nicht nur öffentlich veröffentlichen intern verwenden).

Sven
quelle
Seltsam, wie geht das? Meinen Sie damit, dass der Komponist die Erweiterung selbst lädt?
Pacerier
Composer erstellt zuerst eine Liste der Dinge, die vorhanden sein sollten, und sucht dann nach Sachen, die diese Anforderungsliste erfüllen. Installierte PHP-Erweiterungen sind einfach ein Eintrag in der Liste, der verfügbar ist, um die Anforderungen zu erfüllen. Pakete, bei denen provideein Paket mit dem gleichen Namen wie eine PHP-Erweiterung ebenfalls die Anforderungen erfüllt, da beim Erweitern der erforderlichen und vorhandenen Elemente eine Erweiterung einfach eine Zeichenfolge ist, genau wie der Name eines Bibliothekspakets.
Sven
3

Aktivieren Sie in PHP 7 versuchen Sie unten Befehl

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

Ich bin auf ein ähnliches Problem gestoßen, als ich versucht habe, Composer dazu zu bringen, einige Abhängigkeiten zu installieren. Es stellt sich heraus, dass die DLL, mit der meine Version von Wamp geliefert wurde, einen Konflikt mit 64-Bit-Windows hatte.

Diese URL hat feste Curl-DLLs: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Scrollen Sie nach unten zu dem Abschnitt: Fixed Curl Extensions.

Ich habe "php_curl-5.4.3-VC9-x64.zip" heruntergeladen. Ich habe gerade die DLL im Verzeichnis wamp / bin / php / php5.4.3 / ext mit der DLL überschrieben, die sich in der Zip-Datei befand, und Composer hat wieder funktioniert.

Ich verwende 64-Bit-Windows 8.

Hoffe das hilft.

Gratus D.
quelle
2

Für alle, die auf dieses Problem unter Windows stoßen, konnte ich meine Antwort auf Google überhaupt nicht finden. Ich habe gerade versucht, Composer auszuführen, für das Ext-Curl erforderlich ist, und das hat funktioniert. Fügen Sie alternativ Folgendes in Ihre Datei composer.json ein:

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

Wenn Sie Wamp verwenden, gehen Sie zu:

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

Kadir Hadile
quelle
1

Ich habe Archlinux mit PHP 7.2, in das Curl integriert ist, sodass Composer aufgrund der Menge an Konfigurationsvoodoo keine Ext-Curl sehen kann, mit der PHP glücklich arbeiten kann. Um dies zu umgehen, müssen Sie Composer mit --ignore-platform-reqs verwenden.

zB Composer Update --ignore-platform-reqs

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

Onyx
quelle
1

Versuchen Sie, php5-curl mithilfe des folgenden Snippets zu installieren.

sudo apt-get install php5-curl

Wenn es nicht funktioniert, versuchen Sie es unter dem Code. Ich bin mir sicher, dass es gut funktioniert.

sudo apt-get install php-curl

für mich hat es geklappt ... alles Gute :)

Ksaroz Shrestha
quelle
sudo apt-get install php-curl, arbeitete für mich auf ubuntu
max
0

In meinem Fall bin ich von PHP5 zu PHP7 gewechselt und habe diesen Fehler erhalten. Gehen Sie einfach zu Ihrer /bin/php/php7/php.ini, kommentieren Sie die Erweiterung = php_curl.dll aus und starten Sie Ihren Server neu. Führen Sie die Composer-Installation erneut aus.

Inoubli
quelle
0

Ich bin mir nicht sicher, warum eine Antwort mit Linux-Befehlen so viele Stimmen für eine Windows-bezogene Frage erhalten würde, aber trotzdem ...

Wenn phpinfo()Curl als aktiviert php -mangezeigt wird, dies jedoch NICHT, bedeutet dies, dass Sie wahrscheinlich auch eine php-cli.inihaben. Führen Sie aus php -iund sehen Sie, welche INI-Datei geladen wurde. Wenn es anders ist, unterscheiden Sie es und reflektieren Sie und Unterschiede in der CLI-INI-Datei. Dann solltest du gut gehen.

Übrigens Git Bash anstelle von cmd.exe herunterladen und verwenden!

delboy1978uk
quelle