Помилка встановлення композитора - вимагає 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.