我试图安装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, '卷曲'行是缺失的,但我不知道该怎么做。

我在Win8上有wamp 2.4,我在cmd.exe中运行作曲家。


当前回答

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

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

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

为什么有2个php.ini,只有一个被使用,这对我来说仍然是一个谜…

希望对别人有所帮助!

其他回答

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

向下滚动到“固定卷曲扩展”部分。

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

我用的是64位的Windows 8。

希望这能有所帮助。

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

另一方面,作曲家使用php控制台,这是一个完全不同的故事。该程序的PHP .ini文件不在Apache文件夹中,但它在PHP文件夹中,我不得不取消其中的行注释。然后我再次运行安装,它是好的。

不知道为什么一个Linux命令的答案会得到这么多与Windows相关的问题的投票,但无论如何…

如果phpinfo()显示Curl已启用,而php -m没有,这意味着你可能也有一个php-cli.ini。运行PHP -i并查看加载了哪个ini文件。如果是不同的,区分它并在CLI ini文件中反映和差异。那你应该可以出发了。

顺便说一下,下载并使用Git Bash代替cmd.exe!

我有Archlinux和php 7.2,它集成了Curl,所以再多的配置巫术也不会让Composer看到ext-curl, php可以看到并愉快地使用它。解决方法是使用——ignore-platform-reqs。

例如编写器更新——忽略平台要求

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

如果你得到像php7.2-curl没有可安装的候选或不定位任何包或依赖是php7.2-common或libcurl3这样的错误

你必须用成熟的方式来处理。安装aptitude这些ubuntu包管理器会找到所有的依赖项,并逐个安装。

apt-get install 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[未安装] 接受这个解决方案吗?[Y / n / q / ?]

输入n,然后回车

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

y

再一次

y

Then

systemctl restart apache2

数吨的rhel

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