Errore di installazione del compositore: richiede ext_curl quando è effettivamente abilitato


188

Sto cercando di installare Facebook PHP SDK con Composer. Questo è quello che ottengo

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

Il problema è che ho abilitato l'estensione del ricciolo (non commentata in php.ini). Quando corro phpinfo(), dice che è abilitato. L'unico indizio che ho è che quando corro $ php -m, manca la linea 'curl' ma non so cosa fare al riguardo.

Ho wamp 2.4 su Win8 e sto eseguendo compositore in cmd.exe.


5
Esegui "php -i | grep php.ini" per assicurarti di modificare il file ini corretto per PHP?
Danack,

3
Composer richiederà le estensioni al PHP attualmente in esecuzione, che è la versione della riga di comando di PHP, non la versione del server. Se THAT PHP non ha l'estensione di arricciatura, non funzionerà. Questo è probabilmente un difetto dell'attuale implementazione di Composer, perché la cattura di pacchetti remoti non richiede le estensioni e il server utilizzato per catturare i pacchetti non deve essere il server utilizzato per eseguire le cose.
Sven,

Risposte:


390

Ciò è causato dal fatto che nel tuo sistema non è installata una libreria php5-curl,

Su Ubuntu è solo semplice eseguire il codice di linea di seguito, nel tuo caso su Xamp dai un'occhiata alla documentazione di Xamp

sudo apt-get install php5-curl

Per chiunque usi php7.0

sudo apt-get install php7.0-curl

Per coloro che usano php7.1

sudo apt-get install php7.1-curl

Per coloro che usano php7.2

sudo apt-get install php7.2-curl

Per coloro che usano php7.3

sudo apt-get install php7.3-curl

O semplicemente esegui sotto il comando per installare dalla tua versione:

sudo apt-get install php-curl

10
L'autore della domanda sembra eseguire Windows. Windows non è basato su Debian.
Huertanix,

3
@huertanix nonostante il sistema dell'utente sia in esecuzione, l'errore della domanda è perché la libreria curl non è installata sul sistema che potrebbe causare errori del compositore, quello che faccio notare è solo un esempio per chiarire all'utente come risolverlo.
Adriano Rosa,

3
a ubuntu 16 con PHP 5.6 si dovrebbe usare sudo apt-get install php5.6-curl
Barak

4
Risolto con questo "sudo apt-get install php-curl"
vnchopra,

2
php-curl è un meta-pacchetto che rende la soluzione indipendente dalla versione php. Quindi "sudo apt-get install php-curl" è la risposta universale
Max

113

Questo ha funzionato per me: http://ubuntuforums.org/showthread.php?t=1519176

Dopo aver installato il compositore usando il comando curl -sS https://getcomposer.org/installer | phpbasta eseguire un sudo apt-get updatericciolo quindi reinstallare con sudo apt-get install php5-curl. Quindi il processo di installazione del compositore dovrebbe funzionare in modo da poter finalmente eseguire php composer.phar installle dipendenze elencate nel file composer.json.


Ho sempre evitato Composer grazie al metodo di installazione, questo conferma la mia riluttanza.
MrYellow

@MrYellow quindi quale gestore di pacchetti / dipendenze usi? Cosa c'è di sbagliato nel metodo di installazione di Composer?
Wirone,

26

Come Danack ha detto nei commenti, ci sono 2 file php.ini. Ho decommentato la linea con estensione arricciata in quella nella cartella Apache, che è php.ini usata dal web server.

Il compositore, d'altra parte, usa php per console, che è una storia completamente diversa. Il file Php.ini per quel programma non è quello nella cartella Apache ma è nella cartella PHP e ho dovuto decommentare anche la linea in esso. Quindi ho eseguito di nuovo l'installazione ed è stato OK.


26

su php7 run ad esempio:

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

per ogni estensione mancante. Poi:

> sudo apt-get update

e infine (nella cartella principale del progetto):

> composer install

11

Ho riscontrato lo stesso problema nel tentativo di installare Dropbox SDK.

CURL era effettivamente abilitato sul mio sistema, ma questo significava php.ini nella cartella wamp \ bin \ apache.

Ho semplicemente dovuto modificare manualmente il php.ini situato in wamp \ bin \ php, decommentare la extension=php_curl.dlllinea, riavviare Wamp e ha funzionato perfettamente.

Perché ci sono quei 2 php.ini e ne viene usato solo uno è ancora un mistero per me ...

Spero che sia d'aiuto a qualcuno!


Un php.ini viene utilizzato da Apache all'interno di WAMP e l'altro viene utilizzato quando si avvia il server Web PHP integrato in questo modo: $ php -S localhost:8000nella console
Yahya Uddin

Grazie amico, funziona perfettamente !! Non capisco perché php_curl è controllato e con un ;nel file php.ini ...
w3spi

10

Ho avuto questo problema dopo l'aggiornamento a PHP5.6. La mia risposta è molto simile a quella di Adriano, tranne per il fatto che dovevo correre:

sudo apt-get install php5.6-curl

Notare il "5.6". L'installazione di php5-curl non ha funzionato per me.


5

Secondo https://github.com/composer/composer/issues/2119 potresti estendere il tuo locale composer.jsonper dichiarare che fornisce l'estensione (cosa che non fa davvero - ecco perché non dovresti pubblicare pubblicamente il tuo pacchetto, solo usalo internamente).


Strano, come funziona? Vuoi dire che il compositore carica l'estensione stessa?
Pacerier,

Il compositore crea innanzitutto un elenco di elementi che dovrebbero essere presenti, quindi cerca elementi che soddisfano questo elenco di requisiti. Le estensioni PHP installate sono semplicemente una voce dell'elenco disponibile per soddisfare i requisiti. Pacchetti che provideun pacchetto che ha lo stesso nome di un'estensione PHP soddisferebbe anche i requisiti, poiché nella fase di confronto di elementi necessari ed esistenti, un'estensione è semplicemente una stringa proprio come il nome di un pacchetto di libreria.
Sven,

3

Abilita in php 7 prova sotto il comando

sudo apt-get install php7.0-curl

2

Mi sono imbattuto in un problema simile durante il tentativo di ottenere il compositore per installare alcune dipendenze. Si scopre che la .dll con cui è arrivata la mia versione di Wamp ha avuto un conflitto, immagino, con Windows a 64 bit.

Questo url ha risolto il problema con i ricci: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Scorri verso il basso fino alla sezione che dice: Fixed Curl Extensions.

Ho scaricato "php_curl-5.4.3-VC9-x64.zip". Ho appena sovrascritto la dll all'interno della directory wamp / bin / php / php5.4.3 / ext con la dll che era nel file zip e il compositore ha funzionato di nuovo.

Sto eseguendo Windows 8 a 64 bit.

Spero che questo ti aiuti.


2

Per chiunque abbia riscontrato questo problema su Windows non sono riuscito a trovare la mia risposta su Google. Ho appena provato a eseguire il compositore richiedendo ext-curl e questo ha funzionato. In alternativa aggiungi quanto segue nel tuo file composer.json:

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

1

se usi wamp vai a:

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


1

Ho Archlinux con php 7.2, che ha Curl integrato, quindi nessuna quantità di configurazione voodoo farebbe vedere Composer ext-curl, con cui PHP potrebbe vedere e lavorare felicemente. Soluzione è usare Composer con --ignore-platform-reqs.

ad es. aggiornamento del compositore --ignore-platform-reqs

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


1

prova a installare php5-curl usando lo snippet di seguito.

sudo apt-get install php5-curl

se non funziona provare sotto il codice sono sicuro che funzionerà bene.

sudo apt-get install php-curl

per me ha funzionato ... tutto il meglio :)


sudo apt-get install php-curl, ha funzionato per me su Ubuntu
max

0

Nel mio caso sono passato da PHP5 a PHP7 e ho riscontrato questo errore, vai su /bin/php/php7/php.ini, quindi decomment extension = php_curl.dll e riavvia il server, riesegui l'installazione del compositore.


0

Non sono sicuro del motivo per cui una risposta con i comandi Linux otterrebbe così tanti voti positivi per una domanda relativa a Windows, ma comunque ...

Se phpinfo()mostra Curl come abilitato, ma php -mNON lo è, significa che probabilmente ne hai php-cli.inianche uno . eseguire php -ie vedere quale file ini caricato. Se è diverso, differenziarlo, riflettere e differenze nel file ini della CLI. Allora dovresti essere bravo ad andare.

Btw scarica e usa Git Bash invece di cmd.exe!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.