We have have recently upgraded Magento from 2.3.5 to 2.4.4 and trying do deploy the update to our staging server. During the composer install
we get the following error after a while:
$ php8.1 /usr/local/bin/composer install
[...]
- Installing techdivision/import-product-bundle (25.0.0): Extracting archive
- Installing techdivision/import-product-bundle-ee (27.0.0): Extracting archive
- Installing techdivision/import-customer (17.0.1): Extracting archive
- Installing techdivision/import-customer-address (17.0.1): Extracting archive
- Installing techdivision/import-converter (11.0.0): Extracting archive
https://repo.packagist.org could not be fully loaded (curl error 56 while downloading https://repo.packagist.org/p2/techdivision/import-category.json: Unexpected EOF), package information was loaded from the local cache and may be out of date
Install of sebastian/version failed
Install of sebastian/type failed
Install of sebastian/resource-operations failed
Install of sebastian/recursion-context failed
Install of sebastian/object-reflector failed
[...]
In CurlDownloader.php line 358:
curl error 56 while downloading https://repo.packagist.org/p2/techdivision/import-category.json: Unexpected EOF
When I open the link, the file does not have any errors. Trying the composer install again it will succeed with this file but fail again at the next. Further repeating the step just brings us seemingly one module further. Until now it always fails at the same module shown above.
OS: Ubuntu 18.04.6 LTS
PHP Version: 8.1.9
Composer Version: 2.4.1 2022-08-20 11:44:50
cURL Information: 7.58.0
The verbose output of the error is:
$ php8.1 /usr/local/bin/composer install -vvv
[...]
> pre-package-update: Laminas\DependencyPlugin\DependencyRewriterPluginDelegator->onPrePackageInstallOrUpdate
In Laminas\DependencyPlugin\DependencyRewriterV2::onPrePackageInstallOrUpdate
Exiting; package "techdivision/import-category" does not have a replacement
> pre-package-update: Magento\ComposerDependencyVersionAuditPlugin\Plugin->packageUpdate
Downloading https://repo.packagist.org/p2/techdivision/import-category.json
Reading /home/www-data/.composer/cache/repo/https---repo.packagist.org/provider-techdivision~import-category~dev.json from cache
Downloading https://repo.packagist.org/p2/techdivision/import-category~dev.json if modified
https://repo.packagist.org could not be fully loaded (curl error 56 while downloading https://repo.packagist.org/p2/techdivision/import-category.json: Unexpected EOF), package information was loaded from the local cache and may be out of date
[304] https://repo.packagist.org/p2/techdivision/import-category~dev.json
[...]
In CurlDownloader.php line 358:
[Composer\Downloader\TransportException]
curl error 56 while downloading https://repo.packagist.org/p2/techdivision/import-category.json: Unexpected EOF
Exception trace:
at phar:///usr/local/bin/composer2/src/Composer/Util/Http/CurlDownloader.php:358
Composer\Util\Http\CurlDownloader->tick() at phar:///usr/local/bin/composer2/src/Composer/Util/HttpDownloader.php:371
Composer\Util\HttpDownloader->countActiveJobs() at phar:///usr/local/bin/composer2/src/Composer/Util/Loop.php:89
Composer\Util\Loop->wait() at phar:///usr/local/bin/composer2/src/Composer/Repository/ComposerRepository.php:1058
Composer\Repository\ComposerRepository->loadAsyncPackages() at phar:///usr/local/bin/composer2/src/Composer/Repository/ComposerRepository.php:531
Composer\Repository\ComposerRepository->loadPackages() at phar:///usr/local/bin/composer2/src/Composer/Repository/RepositorySet.php:197
Composer\Repository\RepositorySet->findPackages() at phar:///usr/local/bin/composer2/src/Composer/Package/Version/VersionSelector.php:85
Composer\Package\Version\VersionSelector->findBestCandidate() at /var/www/html/magento2/web/vendor/magento/composer-dependency-version-audit-plugin/src/Utils/Version.php:90
Magento\ComposerDependencyVersionAuditPlugin\Utils\Version->findBestCandidateComposer2() at /var/www/html/magento2/web/vendor/magento/composer-dependency-version-audit-plugin/src/Utils/Version.php:40
Magento\ComposerDependencyVersionAuditPlugin\Utils\Version->findBestCandidate() at /var/www/html/magento2/web/vendor/magento/composer-dependency-version-audit-plugin/src/Plugin.php:139
Magento\ComposerDependencyVersionAuditPlugin\Plugin->packageUpdate() at phar:///usr/local/bin/composer2/src/Composer/EventDispatcher/EventDispatcher.php:200
Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///usr/local/bin/composer2/src/Composer/EventDispatcher/EventDispatcher.php:142
Composer\EventDispatcher\EventDispatcher->dispatchPackageEvent() at phar:///usr/local/bin/composer2/src/Composer/Installer/InstallationManager.php:380
Composer\Installer\InstallationManager->executeBatch() at phar:///usr/local/bin/composer2/src/Composer/Installer/InstallationManager.php:334
Composer\Installer\InstallationManager->downloadAndExecuteBatch() at phar:///usr/local/bin/composer2/src/Composer/Installer/InstallationManager.php:242
Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer2/src/Composer/Installer.php:787
Composer\Installer->doInstall() at phar:///usr/local/bin/composer2/src/Composer/Installer.php:283
Composer\Installer->run() at phar:///usr/local/bin/composer2/src/Composer/Command/InstallCommand.php:144
Composer\Command\InstallCommand->execute() at phar:///usr/local/bin/composer2/vendor/symfony/console/Command/Command.php:298
Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer2/vendor/symfony/console/Application.php:1024
Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer2/vendor/symfony/console/Application.php:299
Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer2/src/Composer/Console/Application.php:343
Composer\Console\Application->doRun() at phar:///usr/local/bin/composer2/vendor/symfony/console/Application.php:171
Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer2/src/Composer/Console/Application.php:138
Composer\Console\Application->run() at phar:///usr/local/bin/composer2/bin/composer:88
require() at /usr/local/bin/composer2:29
I noticed a difference in the composer version locally and used on the server but downgrading to 2.3.5 did not help. Locally or in our docker environment we did not encounter this error before.
As per suggestion I've used curl
and wget
in order to verify what data I am receiving. In both cases I receive valid json and it looks completely normal:
$ curl https://repo.packagist.org/p2/techdivision/import-category.json | jsonlint-php
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 52929 0 52929 0 0 1013k 0 --:--:-- --:--:-- --:--:-- 994k
Valid JSON (stdin)
$ wget https://repo.packagist.org/p2/techdivision/import-category.json
--2022-10-06 09:48:06-- https://repo.packagist.org/p2/techdivision/import-category.json
Resolving repo.packagist.org (repo.packagist.org)... 2001:41d0:52:600::8cf, 5.196.224.108
Connecting to repo.packagist.org (repo.packagist.org)|2001:41d0:52:600::8cf|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/json]
Saving to: ‘import-category.json’
import-category.json [ <=> ] 51,69K --.-KB/s in 0,008s
2022-10-06 09:48:06 (6,50 MB/s) - ‘import-category.json’ saved [52929]
$ file import-category.json
import-category.json: ASCII text, with very long lines, with no line terminators
$ jsonlint-php import-category.json
Valid JSON (import-category.json)
Trying to search for this error message in combination with composer did not yield any results. What could be the cause of this error?
Our current workaround is to disable php-curl.
composer install -vvv
for more verbose outputphp8.1-curl
version?