我正在使用symfony框架和作曲家创建一个php网站。
当我尝试在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文件中寻找扩展名,但是找不到。我需要手动安装扩展程序吗?如果可以,我在哪里可以找到它?
谢谢!
答案 0 :(得分:5)
找到解决方案。由于某种原因,我的composer.json
包含了"ext-http": "*"
。
"require": {
"ext-http": "*"
}
删除此行可解决此问题。我不知道为什么它包含"ext-http": "*"
,我也不完全理解为什么删除它可以解决问题。 (是因为它正在寻找扩展名,但找不到它吗?)
(谢谢所有试图帮助我解决问题的人!)
答案 1 :(得分:5)
就我而言,我正在使用ubuntu,希望这可以解决此问题。
sudo apt install php-http
答案 2 :(得分:1)
万一有人需要,也可以使用pecl
安装它
(需要加载扩展raphf
和propro
来构建):
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对于所需的实际项目有些误导。
composer require phpoffice/phpspreadsheet
产生错误:missing php-mstring
解决方案:
yum install php-mbstring
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”:“ *” }
在作曲家文件中删除此行。我不知道如何,但是对我有用