当我升级Magento 2.4.4时,我得到了过时的功能:Composer\Repository\CompositeRepository的返回类型::count()

8yoxcaq7  于 2022-11-12  发布在  其他
关注(0)|答案(6)|浏览(105)

当我升级Magento 2.4.3到2.4.4时,我得到了一个php8.1弃用功能错误。
PHP致命错误:在继承可计数的过程中:未捕获的异常:不推荐使用的功能:Composer\Repository\CompositeRepository::count()的返回类型应与可计数的::count()兼容:您可以使用[\ReturnTypeWillChange]属性来暂时隐藏/var/www/html/vendor/magento/framework/App/ErrorHandler.php中第180行的通知。您可以使用[\ReturnTypeWillChange]属性来暂时隐藏/var/www/html/vendor/magento/framework/App/ErrorHandler.php中的通知。

igsr9ssn

igsr9ssn1#

从PHP8.1开始,你必须修正函数count()的返回类型。我们需要修改2个文件。
将公共函数count()更改为公共函数count():整数
(第277行)

public function count(): int
{
    if (null === $this->packages) {
        $this->initialize();
    }

    return count($this->packages);
}

php(第180行)

public function count(): int
{
    $total = 0;
    foreach ($this->repositories as $repository) {
        /* @var $repository RepositoryInterface */
        $total += $repository->count();
    }

    return $total;
}
eoxn13cs

eoxn13cs2#

最有可能的问题是,您没有将所有的dev-requires更新到2.4.4的最新版本。如果不更新,这些要求会将composer/composer模块锁定到2.0.x。

9fkzdhlc

9fkzdhlc3#

只需在require中使用此包更新composer.json即可

"require": {
    "magento/composer-dependency-version-audit-plugin": "~0.1",
    "magento/composer-root-update-plugin": "^2.0",  
},

此外,使用最新的 composer 我是(2.3.10)

tzcvj98z

tzcvj98z4#

只需将composer更新到版本2.3.9 -在此版本中,计数方法包含类型

jaxagkaj

jaxagkaj5#

我用这种方式解决了(由 composer 2.3.5):
composer2 require magento/composer-root-update-plugin ~2.0 --no-update
composer2 update

Updating dependencies
Lock file operations: 0 installs, 2 updates, 0 removals
  - Upgrading composer/composer (2.1.0 => 2.2.18)
  - Upgrading magento/composer-root-update-plugin (1.1.2 => 2.0.2)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 2 updates, 0 removals
  - Downloading composer/composer (2.2.18)
Gathering patches for root package.
Gathering patches for dependencies. This might take a minute.
  - Upgrading composer/composer (2.1.0 => 2.2.18): Extracting archive
  - Upgrading magento/composer-root-update-plugin (1.1.2 => 2.0.2): Extracting archive

使用来自Magento 2.4.4 composer.json https://github.com/magento/magento2/blob/2.4.4/composer.json的“要求开发”库
“要求-开发”:{“吸引力框架/吸引力phpunit”:“~1.5.0”,“代理商直接/phpcodesniffer编写器安装程序”:“^0.7.0”,“好友的php/php-cs-fixer”:“~3.3.0”,“卢西塔尼亚语/oauth”:“~0.8.10”,“洋红色/洋红色编码标准”:“*",“magento/magento 2-功能测试-框架”:“^3.7”,“依赖项/依赖项”:“~2.10.0”、“phpmd/phpmd”:“^2.9.1”,“php标准格式/php标准格式”:“~1.2.0”,“php单位/php单位”:“~9.5.0”、“塞巴斯蒂安/phpcpd”:“^6.0.3”,“php_codesniffer”:“~3.6.0”,“symfony/查找器”:“^5.2”}

6rvt4ljy

6rvt4ljy6#

不用担心。我正面临着silimar问题,并通过更新 composer 包修复。
composer需要composer/composer:~2.2.0 -W

相关问题