ChatGPT解决这个技术问题 Extra ChatGPT

Composer 安装错误 - 实际启用时需要 ext_curl

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

运行“php -i | grep php.ini”以确保您正在为 PHP 编辑正确的 ini 文件?
Composer 将询问当前正在运行的 PHP 的扩展,这是 PHP 的命令行版本,而不是服务器版本。如果那个 PHP 没有 curl 扩展,它将无法工作。这可能是 Composer 目前实现的一个缺点,因为抓取远程包不需要扩展,而且用来抓取包的服务器一定不是用来执行东西的服务器。

L
LeGmask

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

该问题的作者似乎正在运行 Windows。 Windows 不是基于 Debian。
@huertanix 尽管用户的系统正在运行,但问题错误是因为系统上未安装 curl 库,这可能会导致作曲家错误,我指出的只是一个示例,以阐明用户如何解决该问题。
在带有 php 5.6 的 ubuntu 16 上,您应该使用 sudo apt-get install php5.6-curl
解决了这个“sudo apt-get install php-curl”
php-curl 是一个元包,它使解决方案独立于 php 版本。所以“sudo apt-get install php-curl”是通用答案
u
user2998553

这对我有用:http://ubuntuforums.org/showthread.php?t=1519176

使用命令 curl -sS https://getcomposer.org/installer | php 安装 composer 后,只需运行 sudo apt-get update,然后使用 sudo apt-get install php5-curl 重新安装 curl。然后 composer 的安装过程应该可以运行,因此您最终可以运行 php composer.phar install 以获取 composer.json 文件中列出的依赖项。


由于安装方法,我一直避免使用 Composer,这证实了我的不情愿。
@MrYellow 那么你使用什么包/依赖管理器? Composer 的安装方法有什么问题?
G
Grigoreas P.

在 php7 上运行例如:

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

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

> sudo apt-get update

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

> composer install

M
Michal Artazov

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

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


u
user3497737

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

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

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

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

希望它对某人有帮助!


一个 php.ini 由 WAMP 中的 Apache 使用,另一个在启动内置 PHP Web 服务器时使用,如下所示:控制台中的 $ php -S localhost:8000
谢谢大佬,效果很好!!不明白为什么要检查 php_curl 并在 php.ini 文件中使用 ; ...
A
Aaron Wright

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

sudo apt-get install php5.6-curl

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


E
Emily

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

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

请分享更多细节,以便其他人可以从中学习。如果 Composer 抱怨 ext-curl 已经丢失,如何将它添加到 composer.json 中解决问题?这不会神奇地安装 cURL(因为 Composer 不会安装扩展)
S
Sven

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


奇怪,它是如何工作的?你的意思是作曲家自己加载扩展?
Composer 首先构建一个应该存在的东西的列表,然后搜索满足这个需求列表的东西。安装的 PHP 扩展只是列表中的一个条目,可用于满足要求。 provide 与 PHP 扩展名相同的包也可以满足要求,因为在比较所需内容和现有内容的阶段,扩展只是一个字符串,就像库包名一样。
G
Gratus D.

我在尝试让 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/

向下滚动到显示: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。

希望这可以帮助。


K
Kadir Hadile

如果使用 wamp 去:

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


S
Sujal Patel

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

sudo apt-get install php7.0-curl

d
delboy1978uk

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

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

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


O
Onyx

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

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

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


K
Ksaroz Shrestha

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

sudo apt-get install php5-curl

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

sudo apt-get install php-curl

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


sudo apt-get install php-curl ,在 ubuntu 上为我工作
I
Inoubli

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


R
Ronny Dsouza

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

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

apt-get install aptitude

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

sudo aptitude install php7.2-curl

如果您遇到这样的错误

E: 找不到包 php7.2-curl E: 找不到 glob 'php7.2-curl' 的任何包

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

再次尝试添加php包

sudo apt-add-repository ppa:ondrej/php

sudo apt-get update

现在试试这个命令

sudo aptitude install php7.2-curl

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

以下操作将解决这些依赖关系: 将以下软件包保留为当前版本: 1) php7.2-curl [未安装] 接受此解决方案吗? [是/否/问/?]

输入 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

请不要在不检查它是否与给定问题匹配的情况下多次发布相同的答案。 sudo apt-add-repository ppa:ondrej/php 不添加任何程序包,甚至在已启用 cURL 扩展的 Windows 8 上使用 WAMP 时也无法使用

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅