我正在尝试使用 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。
这是因为您的系统中没有安装库 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
这对我有用: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 文件中列出的依赖项。
在 php7 上运行例如:
> sudo apt-get install php-curl
> sudo apt-get install php-mbstring
对于每个缺少的扩展。然后:
> sudo apt-get update
最后(在项目的根文件夹中):
> composer install
正如 Danack 在评论中所说,有 2 个 php.ini 文件。我在 Apache 文件夹中取消注释带有 curl 扩展名的行,这是 Web 服务器使用的 php.ini。
另一方面,Composer 使用 php 作为控制台,这是一个完全不同的故事。该程序的 Php.ini 文件不是 Apache 文件夹中的文件,但它位于 PHP 文件夹中,我也不得不取消注释其中的行。然后我再次运行安装,一切正常。
我在尝试安装 Dropbox SDK 时遇到了同样的问题。
我的系统上确实启用了 CURL,但这意味着 wamp\bin\apache 文件夹中的 php.ini。
我只需要手动编辑位于 wamp\bin\php 中的 php.ini,取消注释 extension=php_curl.dll
行,重新启动 Wamp,它就可以完美运行。
为什么有这 2 个 php.ini 并且只使用了一个对我来说仍然是一个谜......
希望它对某人有帮助!
$ php -S localhost:8000
;
...
升级到 PHP5.6 后我遇到了这个问题。我的答案与阿德里亚诺的非常相似,除了我必须运行:
sudo apt-get install php5.6-curl
注意“5.6”。安装 php5-curl 对我不起作用。
对于在 Windows 上遇到此问题的任何人,我根本无法在谷歌上找到我的答案。我刚刚尝试运行 composer require ext-curl 并且这有效。或者,在您的 composer.json 文件中添加以下内容:
"require": {
"ext-curl": "^7.3"
}
ext-curl
已经丢失,如何将它添加到 composer.json
中解决问题?这不会神奇地安装 cURL(因为 Composer 不会安装扩展)
根据 https://github.com/composer/composer/issues/2119,您可以扩展您的本地 composer.json
以声明它提供了扩展(实际上并没有这样做 - 这就是为什么您不应该公开发布您的包,只能在内部使用它)。
provide
与 PHP 扩展名相同的包也可以满足要求,因为在比较所需内容和现有内容的阶段,扩展只是一个字符串,就像库包名一样。
我在尝试让 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。
希望这可以帮助。
如果使用 wamp 去:
wamp\bin\php\php.5.x.x\php.ini
查找:;extension=php_curl.dll
删除 (;)
在 php 7 中启用尝试以下命令
sudo apt-get install php7.0-curl
不知道为什么 Linux 命令的答案会为与 Windows 相关的问题获得如此多的赞成票,但无论如何......
如果 phpinfo()
显示 Curl 已启用,但 php -m
未启用,则表示您可能也有 php-cli.ini
。运行 php -i
并查看加载了哪个 ini 文件。如果不同,请在 CLI ini 文件中对其进行比较并反映和差异。那么你应该很高兴。
顺便说一句,下载并使用 Git Bash 而不是 cmd.exe!
我有带有 php 7.2 的 Archlinux,它集成了 Curl,所以再多的配置 voodoo 也不会让 Composer 看到 ext-curl,PHP 可以看到并愉快地工作。解决方法是将 Composer 与 --ignore-platform-reqs 一起使用。
例如作曲家更新--ignore-platform-reqs
参考 = https://github.com/composer/composer/issues/1426
尝试使用以下代码段安装 php5-curl。
sudo apt-get install php5-curl
如果它不起作用,请尝试下面的代码,我相信它会正常工作。
sudo apt-get install php-curl
对我来说它起作用了......一切顺利:)
在我的情况下,我从 PHP5 移动到 PHP7 并且我遇到了这个错误,只需转到您的 /bin/php/php7/php.ini ,然后取消注释 extension=php_curl.dll 并重新启动您的服务器,重新运行您的作曲家安装。
如果您收到类似 php7.2-curl
的错误,则没有可安装的候选者或找不到任何包或依赖项是 php7.2-common
或 libcurl3
执行此操作
你必须以成熟的方式应对。安装 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 时也无法使用
不定期副业成功案例分享