作曲家更新:缺少请求的PHP扩展名ext-http

时间:2019-02-13 16:53:48

标签: php symfony composer-php

我正在使用symfony框架和作曲家创建一个php网站。

  • 操作系统:Windows 10
  • PHP版本:7.3.2
  • Symfony:4.2.3(环境:dev,调试:true)
  • 作曲者:1.8.4(2019-02-11)

当我尝试在projects文件夹中执行compose update或尝试使用composer require symfony/swiftmailer-bundle安装捆绑软件时,出现以下错误:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested PHP extension ext-http * is missing from your system.
      Install or enable PHP's http extension.

(它说“问题1”,但这是列出的唯一问题。)

我已经在php.ini文件中寻找扩展名,但是找不到。我需要手动安装扩展程序吗?如果可以,我在哪里可以找到它?

谢谢!

8 个答案:

答案 0 :(得分:5)

找到解决方案。由于某种原因,我的composer.json包含了"ext-http": "*"

"require": {
    "ext-http": "*"
}

删除此行可解决此问题。我不知道为什么它包含"ext-http": "*",我也不完全理解为什么删除它可以解决问题。 (是因为它正在寻找扩展名,但找不到它吗?)

(谢谢所有试图帮助我解决问题的人!)

答案 1 :(得分:5)

就我而言,我正在使用ubuntu,希望这可以解决此问题。

sudo apt install php-http

答案 2 :(得分:1)

万一有人需要,也可以使用pecl安装它
(需要加载扩展raphfpropro来构建):

yum install libcurl-devel brotli-devel
pecl install pecl_http

...
Build process completed successfully
Installing '/usr/lib64/php/modules/http.so'
Installing '/usr/include/php/ext/http/php_http.h'
Installing '/usr/include/php/ext/http/php_http_api.h'
Installing '/usr/include/php/ext/http/php_http_buffer.h'
Installing '/usr/include/php/ext/http/php_http_client.h'
Installing '/usr/include/php/ext/http/php_http_client_curl.h'
Installing '/usr/include/php/ext/http/php_http_client_curl_event.h'
Installing '/usr/include/php/ext/http/php_http_client_curl_user.h'
Installing '/usr/include/php/ext/http/php_http_client_request.h'
Installing '/usr/include/php/ext/http/php_http_client_response.h'
Installing '/usr/include/php/ext/http/php_http_cookie.h'
Installing '/usr/include/php/ext/http/php_http_curl.h'
Installing '/usr/include/php/ext/http/php_http_encoding.h'
Installing '/usr/include/php/ext/http/php_http_encoding_brotli.h'
Installing '/usr/include/php/ext/http/php_http_encoding_zlib.h'
Installing '/usr/include/php/ext/http/php_http_env.h'
Installing '/usr/include/php/ext/http/php_http_env_request.h'
Installing '/usr/include/php/ext/http/php_http_env_response.h'
Installing '/usr/include/php/ext/http/php_http_etag.h'
Installing '/usr/include/php/ext/http/php_http_exception.h'
Installing '/usr/include/php/ext/http/php_http_filter.h'
Installing '/usr/include/php/ext/http/php_http_header.h'
Installing '/usr/include/php/ext/http/php_http_header_parser.h'
Installing '/usr/include/php/ext/http/php_http_info.h'
Installing '/usr/include/php/ext/http/php_http_message.h'
Installing '/usr/include/php/ext/http/php_http_message_body.h'
Installing '/usr/include/php/ext/http/php_http_message_parser.h'
Installing '/usr/include/php/ext/http/php_http_misc.h'
Installing '/usr/include/php/ext/http/php_http_negotiate.h'
Installing '/usr/include/php/ext/http/php_http_object.h'
Installing '/usr/include/php/ext/http/php_http_options.h'
Installing '/usr/include/php/ext/http/php_http_params.h'
Installing '/usr/include/php/ext/http/php_http_querystring.h'
Installing '/usr/include/php/ext/http/php_http_response_codes.h'
Installing '/usr/include/php/ext/http/php_http_url.h'
Installing '/usr/include/php/ext/http/php_http_utf8.h'
Installing '/usr/include/php/ext/http/php_http_version.h'
install ok: channel://pecl.php.net/pecl_http-3.2.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=http.so" to php.ini

答案 3 :(得分:0)

您是否已经针对类似问题尝试过此处的选项?

我还没有在WAMP堆栈上遇到此问题...但是,看起来一些相关文章(其中不是'ext-http'这个特殊项目)可能会有所帮助。

当我在LAMP堆栈上遇到类似的问题时,通常意味着我确实需要安装所提到的项目……尽管有时Composer对于所需的实际项目有些误导。


示例1(LAMP)...需要描述的实际项目:

composer require phpoffice/phpspreadsheet
  • 产生错误:missing php-mstring

  • 解决方案:

    yum install php-mbstring


示例2(LAMP)...需要与所描述的项目稍有不同的地方:

composer require phpoffice/phpspreadsheet
  • 产生错误:missing ext-zip

  • 解决方案:

    yum install php-pecl-zip


也许还有running composer in verbose mode

但是,我认为您最好的选择就是此答案中提供的第一个链接(然后浏览类似的WAMP Composer缺少项目问题)。

答案 4 :(得分:0)

根据PHP Official Documentation,您必须在php.ini中找到您的扩展名,并取消注释,或一般将其添加。可能类似于extension=php_http.dll

答案 5 :(得分:0)

php-http是一个由不同程序包实现的标准。 ext-http是Composer用来告知您的应用程序至少需要其中一个软件包的方法。有关更多详细信息,请参见http://docs.php-http.org/en/latest/clients.html的“ Composer虚拟软件包”部分。

您应该能够通过安装提供的软件包之一来解决问题,例如

composer require php-http/curl-client

答案 6 :(得分:0)

对于遇到此问题的人:

- The requested PHP extension ext-http * is missing from your system.

解决方案只是安装PHP扩展名:

sudo apt install php-pecl-http

答案 7 :(得分:-5)

“要求”:{ “ ext-cassendra”:“ *” }

在作曲家文件中删除此行。我不知道如何,但是对我有用