233

我正在尝试使用 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.

问题是,我启用了 curl 扩展(在 php.ini 中未注释)。当我运行时phpinfo(),它说它已启用。我唯一的线索是,当我跑步时$ php -m,'curl' 行不见了,但我不知道该怎么办。

我在 Win8 上有 wamp 2.4,我在 cmd.exe 中运行 composer。

4

16 回答 16

530

这是因为您的系统中没有安装库 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

对于那些使用php7.4的人

sudo apt-get install php7.4-curl

对于那些使用php8.0的人

sudo apt-get install php8.0-curl

或者只需运行以下命令以按您的版本安装:

sudo apt-get install php-curl
于 2014-03-24T19:34:52.123 回答
116

这对我有用: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。然后 composer 的安装过程应该可以运行,因此您最终可以运行php composer.phar install以获取 composer.json 文件中列出的依赖项。

于 2014-01-30T17:48:44.687 回答
32

在 php7 上运行例如:

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

对于每个缺少的扩展。然后:

> sudo apt-get update

最后(在项目的根文件夹中):

> composer install
于 2016-05-19T08:19:46.323 回答
27

正如 Danack 在评论中所说,有 2 个 php.ini 文件。我在 Apache 文件夹中取消注释带有 curl 扩展名的行,这是 Web 服务器使用的 php.ini。

另一方面,Composer 使用 php 作为控制台,这是一个完全不同的故事。该程序的 Php.ini 文件不是 Apache 文件夹中的文件,但它位于 PHP 文件夹中,我也不得不取消注释其中的行。然后我再次运行安装,一切正常。

于 2013-10-13T18:54:52.310 回答
12

我在尝试安装 Dropbox SDK 时遇到了同样的问题。

我的系统上确实启用了 CURL,但这意味着 wamp\bin\apache 文件夹中的 php.ini。

我只需要手动编辑位于 wamp\bin\php 中的 php.ini,取消注释该extension=php_curl.dll行,重新启动 Wamp,它就可以完美运行。

为什么有这 2 个 php.ini 并且只使用了一个对我来说仍然是一个谜......

希望它对某人有帮助!

于 2014-04-28T09:39:52.087 回答
12

升级到 PHP5.6 后我遇到了这个问题。我的答案与阿德里亚诺的非常相似,除了我必须运行:

sudo apt-get install php5.6-curl

注意“5.6”。安装 php5-curl 对我不起作用。

于 2016-06-20T18:27:38.037 回答
7

对于在 Windows 上遇到此问题的任何人,我根本无法在谷歌上找到我的答案。我刚刚尝试运行composer require ext-curl并且这有效。或者,在您的 composer.json 文件中添加以下内容:

"require": {
"ext-curl": "^7.3"
}
于 2019-04-18T04:10:40.190 回答
6

根据https://github.com/composer/composer/issues/2119,您可以扩展您的本地composer.json以声明它提供了扩展(它实际上并没有这样做 - 这就是为什么您不应该公开发布您的包,只有内部使用)。

于 2013-10-12T21:38:39.250 回答
4

我在尝试让 composer 安装一些依赖项时遇到了类似的问题。事实证明,我的 Wamp 版本附带的 .dll 与 64 位 Windows 存在冲突。

此网址已修复 curl dll:http ://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

向下滚动到显示:Fixed Curl Extensions 的部分。

我下载了“php_curl-5.4.3-VC9-x64.zip”。我只是用 zip 文件中的 dll 覆盖了 wamp/bin/php/php5.4.3/ext 目录中的 dll,并且 composer 再次工作。

我正在运行 64 位 Windows 8。

希望这可以帮助。

于 2013-11-04T22:52:37.847 回答
4

如果使用 wamp 去:

wamp\bin\php\php.5.x.x\php.ini 查找: ;extension=php_curl.dll 删除 (;)

于 2015-08-20T12:16:27.803 回答
4

在 php 7 中启用尝试以下命令

sudo apt-get install php7.0-curl
于 2017-01-23T07:13:31.123 回答
3

不知道为什么 Linux 命令的答案会为与 Windows 相关的问题获得如此多的赞成票,但无论如何......

如果phpinfo()显示 Curl 已启用,但未启用,php -m则表示您可能也启用php-cli.ini了。运行php -i并查看加载了哪个 ini 文件。如果不同,请在 CLI ini 文件中对其进行比较并反映和差异。那么你应该很高兴。

顺便说一句,下载并使用 Git Bash 而不是 cmd.exe!

于 2020-01-28T14:56:46.413 回答
2

我有带有 php 7.2 的 Archlinux,它集成了 Curl,所以再多的配置 voodoo 也不会让 Composer 看到 ext-curl,PHP 可以看到并愉快地工作。解决方法是将 Composer 与 --ignore-platform-reqs 一起使用。

例如作曲家更新--ignore-platform-reqs

参考 = https://github.com/composer/composer/issues/1426

于 2018-10-24T10:29:51.600 回答
2

尝试使用以下代码段安装 php5-curl。

sudo apt-get install php5-curl

如果它不起作用,请尝试下面的代码,我相信它会正常工作。

sudo apt-get install php-curl

对我来说它起作用了......一切顺利:)

于 2020-01-28T14:45:37.593 回答
0

在我的情况下,我从 PHP5 移动到 PHP7 并且我遇到了这个错误,只需转到您的 /bin/php/php7/php.ini ,然后取消注释 extension=php_curl.dll 并重新启动您的服务器,重新运行您的作曲家安装。

于 2018-12-06T10:08:28.230 回答
-1

如果您收到错误,例如php7.2-curl没有可安装的候选人或找不到任何包或依赖项,php7.2-common或者libcurl3执行此操作

你必须以成熟的方式应对。安装 aptitude 这些 ubuntu 包管理器会找到所有依赖项,并会一一安装。

apt-get install aptitude

现在你必须检查 aptitude 是否可以下载它是否按照说明下载

sudo aptitude install php7.2-curl

如果您遇到这样的错误

E: Unable to locate package php7.2-curl
E: Couldn't find any package by glob 'php7.2-curl'

任何类型的错误我都不是在谈论正确的这些错误

再次尝试添加php包

sudo apt-add-repository ppa:ondrej/php

sudo apt-get update

现在试试这个命令

sudo aptitude install php7.2-curl

Aptitude 会询问您是否要保留所有依赖项的当前版本

The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     php7.2-curl [Not Installed]                        



Accept this solution? [Y/n/q/?]

n然后输入Enter

Aptitude 将找到所有依赖项并要求您安装所有包类型

y

再次

y

然后

systemctl restart apache2

对于 rhel 的 centos

systemctl restart httpd

默认情况下它不会启用 PHP 7.2 FPM。注意:要在 Apache2 中启用 PHP 7.2 FPM,请执行

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

此方法不仅针对此错误您可以使用 aptitude 找到任何 php apache2 或 ubuntu 系统包解决方案。

Upvote if you find your solution
于 2021-10-09T20:42:58.027 回答