Erreur d'installation de Composer - nécessite ext_curl lorsqu'il est réellement activé

198

J'essaye d'installer le SDK PHP Facebook avec Composer. C'est ce que je reçois

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

Le problème est que l'extension curl est activée (non commentée dans php.ini). Quand je cours phpinfo(), il dit que c'est activé. Le seul indice que j'ai, c'est que lorsque je cours $ php -m, la ligne «curl» manque mais je ne sais pas quoi faire à ce sujet.

J'ai wamp 2.4 sur Win8 et j'utilise composer dans cmd.exe.

Michal Artazov
la source
6
Exécutez "php -i | grep php.ini" pour vous assurer que vous éditez le fichier ini correct pour PHP?
Danack
3
Composer demandera au PHP en cours d'exécution les extensions, qui est la version de ligne de commande de PHP, pas la version du serveur. Si THAT PHP n'a pas l'extension curl, cela ne fonctionnera pas. C'est probablement une lacune de l'implémentation actuelle de Composer, car la capture de packages distants ne nécessite pas les extensions, et le serveur utilisé pour récupérer les packages ne doit pas être le serveur utilisé pour exécuter les choses.
Sven

Réponses:

409

Cela est dû au fait que vous n'avez pas de bibliothèque php5-curl installée dans votre système,

Sur Ubuntu, il suffit d'exécuter le code de ligne ci-dessous, dans votre cas sur Xamp, jetez un œil à la documentation Xamp

sudo apt-get install php5-curl

Pour tous ceux qui utilisent php7.0

sudo apt-get install php7.0-curl

Pour ceux qui utilisent php7.1

sudo apt-get install php7.1-curl

Pour ceux qui utilisent php7.2

sudo apt-get install php7.2-curl

Pour ceux qui utilisent php7.3

sudo apt-get install php7.3-curl

Ou exécutez simplement la commande ci-dessous pour installer par votre version:

sudo apt-get install php-curl
Adriano Rosa
la source
14
L'auteur de la question semble exécuter Windows. Windows n'est pas basé sur Debian.
huertanix
4
@huertanix malgré le fonctionnement du système de l'utilisateur, l'erreur de question est que la bibliothèque curl n'est pas installée sur le système, ce qui peut provoquer une erreur du composeur, ce que je souligne n'est qu'un exemple pour clarifier à l'utilisateur comment résoudre ce problème.
Adriano Rosa
3
à ubuntu 16 avec php 5.6, vous devriez utiliser sudo apt-get install php5.6-curl
barak
4
Résolu avec ce "sudo apt-get install php-curl"
vnchopra
3
php-curl est un méta-package qui rend la solution indépendante de la version php. Donc "sudo apt-get install php-curl" est la réponse universelle
Max
114

Cela a fonctionné pour moi: http://ubuntuforums.org/showthread.php?t=1519176

Après avoir installé composer à l'aide de la commande, curl -sS https://getcomposer.org/installer | phpexécutez simplement un sudo apt-get updatepuis réinstallez curl avec sudo apt-get install php5-curl. Ensuite, le processus d'installation de compositeur devrait fonctionner afin que vous puissiez enfin exécuter php composer.phar installpour obtenir les dépendances répertoriées dans votre fichier composer.json.

user2998553
la source
J'ai toujours évité Composer en raison de la méthode d'installation, cela confirme ma réticence.
MrYellow
@MrYellow alors quel package / gestionnaire de dépendances utilisez-vous? Quel est le problème avec la méthode d'installation de Compositeur?
Wirone
26

Comme l'a dit Danack dans les commentaires, il existe 2 fichiers php.ini. J'ai décommenté la ligne avec l'extension curl dans celle du dossier Apache, qui est php.ini utilisé par le serveur Web.

Composer, quant à lui, utilise php pour console, ce qui est une toute autre histoire. Le fichier Php.ini de ce programme n'est pas celui du dossier Apache mais il se trouve dans le dossier PHP et j'ai également dû décommenter la ligne. Ensuite, j'ai exécuté à nouveau l'installation et c'était OK.

Michal Artazov
la source
26

sur php7 par exemple:

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

pour chaque extension manquante. Ensuite:

> sudo apt-get update

et enfin (dans le dossier racine du projet):

> composer install
Grigoreas P.
la source
11

J'ai rencontré le même problème en essayant d'installer le SDK Dropbox.

CURL était en effet activé sur mon système mais cela signifiait par le php.ini dans le dossier wamp \ bin \ apache.

J'ai simplement dû éditer manuellement le php.ini situé dans wamp \ bin \ php, décommenter la extension=php_curl.dllligne, redémarrer Wamp et cela a parfaitement fonctionné.

Pourquoi il y a ces 2 php.ini et qu'un seul est utilisé est encore un mystère pour moi ...

J'espère que ça aide quelqu'un!

utilisateur3497737
la source
Un php.ini est utilisé par Apache dans WAMP et l'autre est utilisé lors du démarrage du serveur Web PHP intégré comme ceci: $ php -S localhost:8000dans la console
Yahya Uddin
Merci mec, ça marche parfaitement !! Je ne comprends pas pourquoi php_curl est vérifié et avec un ;dans le fichier php.ini ...
w3spi
10

J'ai eu ce problème après la mise à niveau vers PHP5.6. Ma réponse est très similaire à celle d'Adriano, sauf que j'ai dû courir:

sudo apt-get install php5.6-curl

Notez le "5.6". L'installation de php5-curl n'a pas fonctionné pour moi.

Aaron Wright
la source
5

Selon https://github.com/composer/composer/issues/2119, vous pouvez étendre votre local composer.jsonpour indiquer qu'il fournit l'extension (ce qu'il ne fait pas vraiment - c'est pourquoi vous ne devriez pas publier publiquement votre package, seulement utilisez-le en interne).

Sven
la source
Bizarre, comment ça marche? Voulez-vous dire que le compositeur charge l'extension lui-même?
Pacerier
Composer crée d'abord une liste des éléments qui devraient être présents, puis recherche les éléments qui satisfont à cette liste d'exigences. Les extensions PHP installées sont simplement une entrée dans la liste disponible pour répondre aux exigences. Les packages qu'un providepackage qui porte le même nom qu'une extension PHP satisferait également aux exigences, car au stade de la comparaison des éléments requis et existants, une extension est simplement une chaîne comme le nom d'un package de bibliothèque.
Sven
3

Activer dans php 7 essayez ci-dessous la commande

sudo apt-get install php7.0-curl
Sujal Patel
la source
3

Pour tous ceux qui rencontrent ce problème sous Windows, je n'ai pas du tout trouvé ma réponse sur Google. J'ai juste essayé d'exécuter le compositeur requiert ext-curl et cela a fonctionné. Vous pouvez également ajouter ce qui suit dans votre fichier composer.json:

"require": {
"ext-curl": "^7.3"
}
Emilie
la source
2

J'ai rencontré un problème similaire en essayant de demander à composer d'installer certaines dépendances. Il s'avère que le .dll avec lequel ma version de Wamp est fournie avait un conflit, je suppose, avec Windows 64 bits.

Cette URL a corrigé les dll curl: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Faites défiler jusqu'à la section qui dit: Extensions de Curl fixes.

J'ai téléchargé "php_curl-5.4.3-VC9-x64.zip". J'ai juste écrasé la dll dans le répertoire wamp / bin / php / php5.4.3 / ext avec la dll qui était dans le fichier zip et le compositeur a fonctionné à nouveau.

J'utilise Windows 8 64 bits.

J'espère que cela t'aides.

Gratus D.
la source
1

si vous utilisez wamp, allez à:

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

Kadir Hadile
la source
1

J'ai Archlinux avec php 7.2, qui a Curl intégré, donc aucune quantité de configuration vaudou ne ferait voir à Composer ext-curl, que PHP pourrait voir et travailler avec plaisir. Le contournement consiste à utiliser Composer avec --ignore-platform-reqs.

par exemple, mise à jour du compositeur --ignore-platform-reqs

Référence = https://github.com/composer/composer/issues/1426

Onyx
la source
1

essayez d'installer php5-curl en utilisant l'extrait ci-dessous.

sudo apt-get install php5-curl

si cela ne fonctionne pas, essayez le code ci-dessous, je suis sûr que cela fonctionnera bien.

sudo apt-get install php-curl

pour moi, cela a fonctionné ... tout le meilleur :)

Ksaroz Shrestha
la source
sudo apt-get install php-curl, a fonctionné pour moi sur ubuntu
max
0

Dans mon cas, je suis passé de PHP5 à PHP7 et j'ai cette erreur, allez simplement dans votre /bin/php/php7/php.ini, puis décommentez l'extension = php_curl.dll et redémarrez votre serveur, relancez votre installation de composer.

Inoubli
la source
0

Je ne sais pas pourquoi une réponse avec des commandes Linux obtiendrait autant de votes pour une question liée à Windows, mais de toute façon ...

Si phpinfo()affiche Curl comme activé, mais php -mPAS, cela signifie que vous en avez probablement php-cli.iniaussi. exécutez php -iet voyez quel fichier ini chargé. S'il est différent, modifiez-le et reflétez les différences dans le fichier ini CLI. Alors vous devriez être prêt à partir.

Téléchargez Btw et utilisez Git Bash au lieu de cmd.exe!

delboy1978uk
la source