Composerインストールエラー-実際に有効になっている場合はext_curlが必要


188

ComposerでFacebook PHP SDKをインストールしようとしています。これは私が得るものです

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

問題は、カール拡張機能を有効にしていることです(php.iniでコメント化されていません)。を実行するとphpinfo()、有効になっていると表示されます。私が持っている唯一の手がかりは、私が実行したときに$ php -m「curl」行が欠落していることですが、それについて何をすべきかわかりません。

Win8にWamp 2.4があり、cmd.exeでcomposerを実行しています。


5
「php -i | grep php.ini」を実行して、PHPの正しいiniファイルを編集していることを確認しますか?
Danack 2013年

3
Composerは、現在実行中のPHPに拡張機能を要求します。これは、サーバーバージョンではなく、コマンドラインバージョンのPHPです。そのPHPにcurl拡張がない場合、機能しません。リモートパッケージの取得には拡張機能が不要であり、パッケージの取得に使用されるサーバーは、物事の実行に使用されるサーバーであってはならないため、これはComposerの現在の実装のおそらく欠点です。
2013年

回答:


390

これは、システムにライブラリphp5-curlがインストールされていないために発生します。

Ubuntuでは、次の行コードを実行するだけです。Xampの場合は、Xampのドキュメントをご覧ください。

sudo apt-get install php5-curl

php7.0を使用するすべての人

sudo apt-get install php7.0-curl

php7.1をお使いの方

sudo apt-get install php7.1-curl

php7.2をお使いの方

sudo apt-get install php7.2-curl

php7.3をお使いの方

sudo apt-get install php7.3-curl

または、以下のコマンドを実行して、バージョンごとにインストールします。

sudo apt-get install php-curl

10
質問の作成者はWindowsを実行しているようです。WindowsはDebianベースではありません。
huertanix

3
@huertanixユーザーのシステムが実行されているにもかかわらず、エラーが発生するのは、curlライブラリがシステムにインストールされていないためです。これにより、作曲家エラーが発生する可能性があります。
Adriano Rosa、

3
ubuntu 16とphp 5.6では、sudo apt-get install php5.6-curl
barak

4
この「sudo apt-get install php-curl」で解決
vnchopra '19

2
php-curlは、ソリューションをphpのバージョンから独立させるメタパッケージです。したがって、「sudo apt-get install php-curl」が一般的な答えです
Max

113

これは私のために働きました:http : //ubuntuforums.org/showthread.php?t=1519176

コマンドを使用してcomposerをインストールした後、をcurl -sS https://getcomposer.org/installer | php実行してsudo apt-get updatecurlを再インストールしsudo apt-get install php5-curlます。次に、composerのインストールプロセスが機能し、最終的に実行php composer.phar installしてcomposer.jsonファイルにリストされている依存関係を取得できます。


私はインストール方法のために常にComposerを避けてきました。これは私の気が進まないことを裏付けています。
MrYellow 2015

@MrYellowでは、どのパッケージ/依存関係マネージャーを使用しますか?Composerのインストール方法の何が問題になっていますか?
Wirone

26

Danackがコメントで言ったように、2つのphp.iniファイルがあります。私は、Apacheフォルダーの1つにあるcurl拡張子のある行のコメントを外しました。

一方、Composerはコンソールにphpを使用していますが、これはまったく別の話です。そのプログラムのPhp.iniファイルは、Apacheフォルダー内のものではありませんが、PHPフォルダー内にあり、その行もコメント解除する必要がありました。その後、再度インストールを実行しましたが、問題はありませんでした。


26

php7で実行する例:

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

不足しているすべての拡張機能。次に:

> sudo apt-get update

最後に(プロジェクトのルートフォルダー内):

> composer install

11

Dropbox SDKをインストールしようとして同じ問題が発生しました。

CURLは実際に私のシステムで有効になっていますが、これはwamp \ bin \ apacheフォルダーのphp.iniで有効になっています。

wamp \ bin \ phpにあるphp.iniを手動で編集し、extension=php_curl.dll行のコメントを外してWampを再起動するだけで、完全に機能しました。

なぜそれらの2つのphp.iniがあり、1つだけが使用されるのかは、それでも私にとって謎です...

それが誰かに役立つことを願っています!


一つのphp.iniをWAMP内のApacheで使用されており、このようなPHPのWebサーバに組み込まれて起動するときに他が使用されます。$ php -S localhost:8000コンソールに
ヤヒヤウディン

男ありがとう、完璧に動作します!! php_curlがチェックさ;れ、php.iniファイルにが含まれている理由がわかりません...
w3spi

10

PHP5.6にアップグレードした後、この問題が発生しました。私の答えは、私が実行しなければならなかったことを除いて、アドリアーノのものと非常に似ています:

sudo apt-get install php5.6-curl

「5.6」に注目してください。php5-curlをインストールしてもうまくいきませんでした。


5

https://github.com/composer/composer/issues/2119によると、ローカルcomposer.jsonを拡張して、それが拡張機能を提供していることを示すことができます(これは実際には機能しません。そのため、パッケージを一般公開しないでください。内部で使用してください)。


おかしい、それはどのように機能しますか?composerが拡張機能自体をロードするということですか?
Pacerier 2015

Composerは最初に存在する必要があるもののリストを作成し、次にこの要件リストを満たすものを検索します。インストールされたPHP拡張機能は、単に要件を満たすために使用できるリスト内のエントリです。パッケージprovideに必要と既存のものを比較する段階で、拡張子は単純にライブラリパッケージ名のような文字列であるため、PHP拡張モジュールと同じ名前が付けられたパッケージも、要件を満たすでしょう。
Sven


2

composerにいくつかの依存関係をインストールさせようとしたときに、同様の問題に遭遇しました。私のバージョンのWampに付属していた.dllは、64ビットWindowsと競合していることがわかりました。

このURLにはcurl dllが修正されています:http ://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

「固定Curl拡張機能」というセクションまでスクロールします。

「php_curl-5.4.3-VC9-x64.zip」をダウンロードしました。wamp / bin / php / php5.4.3 / extディレクトリ内のdllをzipファイル内のdllで上書きしただけで、作曲家は再び動作しました。

64ビットのWindows 8を実行しています。

お役に立てれば。


2

Windowsでこの問題が発生した場合、Googleで私の答えを見つけることができませんでした。composer require ext-curlを実行してみましたが、これでうまくいきました。または、composer.jsonファイルに以下を追加します。

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

1

ワンプを使用する場合は、次の場所に移動します。

wamp\bin\php\php.5.x.x\php.ini 検索: ;extension=php_curl.dll 削除(;)


1

Curlが統合されたphp 7.2のArchlinuxを使用しているので、構成のブードゥーによってComposerにext-curlが表示されることはありません。回避策は、-ignore-platform-reqsでComposerを使用することです。

例:composer update --ignore-platform-reqs

リファレンス= https://github.com/composer/composer/issues/1426


1

以下のスニペットを使用してphp5-curlをインストールしてみてください。

sudo apt-get install php5-curl

うまくいかない場合は、以下のコードを試してみてください。

sudo apt-get install php-curl

私にとってそれはうまくいきました...すべて最高です:)


sudo apt-get install php-curl、ubuntuで私のために働いた
最大

0

私の場合、PHP5からPHP7に移動してこのエラーが発生しました。単に/bin/php/php7/php.iniに移動し、extension = php_curl.dllのコメントを解除してサーバーを再起動し、composerインストールを再実行してください。


0

Linuxコマンドを使用した回答がWindows関連の質問に非常に多くの賛成票を投じる理由はわかりませんが、とにかく...

場合phpinfo()を示しカールが有効になって、まだphp -mそれはあなたがおそらく持っていることを意味し、しませんphp-cli.iniあまりにも。実行してphp -i、読み込まれたiniファイルを確認します。異なる場合は、それを比較して、CLIのiniファイルに反映し、違いを確認してください。その後、あなたは行ってもいいはずです。

ところで、cmd.exeの代わりにGit Bashをダウンロードして使用してください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.