2013-10-12 55 views
108

我試圖與作曲家安裝Facebook的PHP SDK。這是我得到作曲家安裝錯誤 - 需要ext_curl時,它實際上是啓用

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

問題是,我啓用了curl擴展(在php.ini中取消註釋)。當我運行phpinfo()時,它表示已啓用。 唯一的線索我是,當我運行$ php -m,「捲曲」行丟失,但我不知道該怎麼辦纔好。

我有Win8的WAMP 2.4和我在cmd.exe的運行作曲家。

+4

運行 「PHP -i | grep的php.ini文件」,以確保您正在編輯爲PHP正確的ini文件? – Danack

+3

Composer將詢問當前正在運行的PHP的擴展名,它是PHP的命令行版本,而不是服務器版本。如果PHP沒有curl擴展名,它將不起作用。這可能是Composer當前實現的一個缺點,因爲獲取遠程包不需要擴展,並且用於抓包的服務器不能是用於執行任務的服務器。 – Sven

回答

189

這是造成的,因爲你沒有一個圖書館PHP5捲曲安裝在系統中,

在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 
+4

這個答案應該被接受。 –

+3

這個問題的作者似乎在運行Windows。 Windows不是基於Debian的。 – huertanix

+2

@huertanix儘管用戶的系統正在運行,但問題錯誤是因爲系統上未安裝curl庫,這可能會導致作曲者錯誤,我指出的僅僅是一個例子來說明用戶如何解決這個問題。 –

5

根據https://github.com/composer/composer/issues/2119,你可以擴展你的本地composer.json,說明它提供了擴展(它並不真正做 - 這就是爲什麼你不應該公開發布你的包,只能在內部使用它)。

+0

奇怪,它是如何工作的?你的意思是這個作曲家本身加載了這個擴展嗎? – Pacerier

+0

作曲家首先構建應該出現的東西列表,然後搜索滿足此需求列表的東西。安裝的PHP擴展只是列表中可用於滿足需求的條目。 「提供」一個與PHP擴展名相同的包的軟件包也可以滿足需求,因爲在比較需要和現有的東西時,擴展只是一個字符串,就像庫包名一樣。 – Sven

25

由於Danack在評論中說,有2個的php.ini文件。我取消了在Apache文件夾中的捲曲擴展名,即web服務器使用的php.ini中的一行。

作曲家,在另一方面,使用PHP控制檯這是一個完全不同的故事。該程序的Php.ini文件不是Apache文件夾中的文件,而是位於PHP文件夾中,我不得不取消其中的註釋。然後我再次運行安裝,這是確定的。

+1

相關:http://stackoverflow.com/q/2750580/632951 – Pacerier

2

我試圖讓作曲家安裝一些依賴關係時遇到了類似的問題。 事實證明,我的Wamp版本帶來了一個衝突,我猜測,它與64位Windows有衝突。

這個URL已經固定捲曲的dll:http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

滾動到說的部分:固定捲曲擴展。

我下載了「php_curl-5.4.3-VC9-x64.zip」。我只是用zip文件中的dll覆蓋了wamp/bin/php/php5.4.3/ext目錄中的dll,並且composer再次運行。

我正在運行64位Windows 8.

希望這會有所幫助。

+0

祝我這工作對我來說,但沒有這樣的運氣:( – tj111

110

這爲我工作:http://ubuntuforums.org/showthread.php?t=1519176

使用命令curl -sS https://getcomposer.org/installer | php只運行一個sudo apt-get update然後重新安裝捲曲與sudo apt-get install php5-curl安裝作曲家。然後作曲家的安裝過程應該可以運行,以便您最終可以運行php composer.phar install以獲取composer.json文件中列出的依賴關係。

+0

非常感謝你我很長一段時間尋找這個解釋 –

+0

謝謝你們, –

+0

由於安裝方法,我總是避免使用Composer,這證實了我的不情願。 – MrYellow

7

我遇到了同樣的問題,試圖安裝的Dropbox SDK。

CURL確實在我的系統上啓用,但是這意味着php.ini在wamp \ bin \ apache文件夾中。

我只需手動編輯位於wamp \ bin \ php中的php.ini,取消註釋extension=php_curl.dll行,重新啓動Wamp並完美運行。

爲什麼還有那些2 php.ini並僅使用一個是對我來說還是一個謎......

希望這是helpul的人!

+0

一個php.ini在WAMP中被Apache使用,另一個在啓動內置的PHP web服務器時使用,如下所示:控制檯中的$ php -S localhost:8000' –

+0

謝謝你,完美的作品!不明白爲什麼選擇php_curl並在php.ini文件中用';'... – Zl3n

-1

如果使用WAMP去:

wamp\bin\php\php.5.x.x\php.ini 發現: ;extension=php_curl.dll 刪除(;)

20

上PHP7運行例如:

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

,每缺少擴展。然後:

> sudo apt-get update 

,最後(在項目的根文件夾):

> composer install 
+2

在Ubuntu 16.04上完美工作。謝謝! –

+0

也適用於Ubuntu 16.10。謝謝! – Kamaronas

7

我升級到PHP5.6後有這個問題。我的回答非常類似於阿德里亞諾的,除了我必須跑:

sudo apt-get install php5.6-curl 

注意「5.6」。安裝php5-curl對我無效。

+0

謝謝你,這工作對我來說,我使用PHP版本5.6 :) – jrran90

+0

亞倫:你真棒 –

1

在PHP 7試試下面的命令啓用

sudo apt-get install php7.0-curl