diff --git a/src/Composer/Command/DiagnoseCommand.php b/src/Composer/Command/DiagnoseCommand.php
index 28a38282a..fa5e9aa56 100644
--- a/src/Composer/Command/DiagnoseCommand.php
+++ b/src/Composer/Command/DiagnoseCommand.php
@@ -199,7 +199,7 @@ EOT
}
$io->write('OpenSSL version: ' . (defined('OPENSSL_VERSION_TEXT') ? ''.OPENSSL_VERSION_TEXT.'' : 'missing'));
- $io->write('cURL version: ' . $this->getCurlVersion());
+ $io->write('curl version: ' . $this->getCurlVersion());
$finder = new ExecutableFinder;
$hasSystemUnzip = (bool) $finder->find('unzip');
diff --git a/src/Composer/Util/Http/CurlDownloader.php b/src/Composer/Util/Http/CurlDownloader.php
index 4dd554065..635eb6ba5 100644
--- a/src/Composer/Util/Http/CurlDownloader.php
+++ b/src/Composer/Util/Http/CurlDownloader.php
@@ -221,6 +221,12 @@ class CurlDownloader
curl_setopt($curlHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
}
+ // curl 8.7.0 - 8.7.1 has a bug whereas automatic accept-encoding header results in an error when reading the response
+ // https://github.com/composer/composer/issues/11913
+ if (in_array($version['version'], ['8.7.0', '8.7.1'], true) && \defined('CURL_VERSION_LIBZ') && (CURL_VERSION_LIBZ & $features)) {
+ curl_setopt($curlHandle, CURLOPT_ENCODING, "gzip");
+ }
+
$options['http']['header'] = $this->authHelper->addAuthenticationHeader($options['http']['header'], $origin, $url);
$options = StreamContextFactory::initOptions($url, $options, true);