Помилка встановлення композитора - вимагає ext_curl, коли він фактично включений


188

Я намагаюся встановити 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' відсутній, але я не знаю, що з цим робити.

У мене wamp 2.4 на Win8 і я запускаю композитор у cmd.exe.


5
Запустіть "php -i | grep php.ini", щоб переконатися, що ви редагуєте правильний файл ini для PHP?
Данак

3
Композитор запитає поточно запущений PHP для розширень, що є командним рядком PHP, а не версією сервера. Якщо у цього PHP немає розширення завивки, воно не працюватиме. Це, мабуть, недолік поточної реалізації Composer, оскільки захоплення віддалених пакетів не вимагає розширень, а сервер, який використовується для захоплення пакетів, не повинен бути сервером, який використовується для виконання речей.
Свен

Відповіді:


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 не встановлена ​​в системі, що може спричинити помилку композитора, те, що я вказую, є лише прикладом для пояснення користувача, як це виправити.
Адріано Роза

3
в ubuntu 16 з php 5.6 вам слід використовувати sudo apt-get install php5.6-curl
barak

4
Вирішили цю "sudo apt-get install php-curl"
vnchopra

2
php-curl - це мета-пакет, який робить рішення незалежним від версії php. Отже, "sudo apt-get install php-curl" є універсальною відповіддю
Макс

113

Це працювало для мене: http://ubuntuforums.org/showthread.php?t=1519176

Після установки композитора за допомогою команди curl -sS https://getcomposer.org/installer | phpпросто запустіть, а sudo apt-get updateпотім перевстановіть curl sudo apt-get install php5-curl. Тоді процес установки композитора повинен працювати, щоб ви могли нарешті запустити, php composer.phar installщоб отримати залежності, перелічені у вашому файлі composer.json.


Я завжди уникав композитора через метод встановлення, це підтверджує моє небажання.
MrYellow

@MrYellow, так яким менеджером пакунків / залежностей ви користуєтесь? Що не так з методом встановлення композитора?
Wirone

26

Як сказав Данак у коментарях, є 2 файли php.ini. Я прокоментував рядок із розширенням curl у папці Apache, що є php.ini, що використовується веб-сервером.

Композитор, з іншого боку, використовує 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 дійсно включений у моїй системі, але це означає php.ini у папці wamp \ bin \ apache.

Мені просто довелося вручну редагувати php.ini, розташований у wamp \ bin \ php, відміняти extension=php_curl.dllрядок, перезапустити Wamp, і це працювало чудово.

Чому існують ці 2 php.ini, і використовується лише одна, для мене поки залишається загадкою ...

Сподіваюся, це комусь допоможе!


Один php.ini використовується Apache в рамках WAMP, а інший використовується при запуску вбудованого веб-сервера PHP так: $ php -S localhost:8000в консолі
Yahya Uddin

Спасибі людино, це прекрасно працює !! Не розумію, чому 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/isissue/2119, ви можете поширити свій локальний, composer.jsonщоб він міг вказати, що він надає розширення (що це насправді не робить - тому ви не повинні публічно публікувати свій пакет, лише використовувати його внутрішньо).


Дивно, як це працює? Ви маєте на увазі, що композитор завантажує саме розширення?
Pacerier

Спочатку композитор створює список речей, які мають бути присутніми, а потім шукає речі, які відповідають цьому списку вимог. Встановлені розширення PHP просто є записом у списку, який доступний для задоволення вимог. Пакети, що provideпакет, який названий таким же, як і розширення PHP, також задовольнив би вимоги, тому що на етапі порівняння потрібних та існуючих речей розширення - це просто рядок, як і назва бібліотечного пакета.
Свен

3

Увімкніть у php 7 команду спробуйте нижче

sudo apt-get install php7.0-curl

2

Я зіткнувся з подібною проблемою, коли намагався змусити композитора встановити деякі залежності. Виявляється, .dll з моєю версією Wamp був конфлікт, я здогадуюсь, із 64-бітною Windows.

Цей URL-адрес має виправлені завитки: 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". Я просто перезаписав dll всередині каталогу wamp / bin / php / php5.4.3 / ext з dll, який був у zip-файлі, і композитор знову працював.

У мене працює 64-бітна Windows 8.

Сподіваюся, це допомагає.


2

Для тих, хто стикається з цією проблемою в Windows, я взагалі не міг знайти свою відповідь на Google. Я просто спробував запустити композитора, вимагаючи ext-curl, і це працювало. Крім того, додайте у файл composer.json наступне:

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

1

якщо використовувати wamp, перейдіть до:

wamp\bin\php\php.5.x.x\php.ini знайти: ;extension=php_curl.dll видалити (;)


1

У мене є Archlinux з php 7.2, в який вбудований Curl, тому жодна кількість конфігураційних вуду не змусить композитора бачити ext-curl, що PHP зможе бачити і працювати з ним із задоволенням. Обхід - використання Composer з --ignore-platform-reqs.

наприклад, оновлення композитора --ignore-platform-reqs

Довідка = https://github.com/composer/composer/isissue/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, потім відмініть розширення = php_curl.dll і перезапустіть ваш сервер, заново запустіть установку композитора.


0

Не впевнений, чому відповідь з командами Linux отримає стільки голосів за запитання щодо Windows, але все одно ...

Якщо phpinfo()показано Curl як увімкнений, але php -mНЕ, це означає, що ви, ймовірно, php-cli.iniтеж маєте . запустіть php -iі подивіться, який файл ini завантажений. Якщо це інше, відміньте його та відобразіть та розходьте у файлі CLI ini. Тоді вам слід добре піти.

Завантажте та використовуйте Git Bash замість cmd.exe!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.