作曲家和 laravel 7 不适用于 php 8.1 [关闭]

Posted

技术标签:

【中文标题】作曲家和 laravel 7 不适用于 php 8.1 [关闭]【英文标题】:composer and laravel 7 not working with php 8.1 [closed] 【发布时间】:2022-01-22 07:38:55 【问题描述】:

今天我将 xampp 中的 php 更新为 8.1.0,之后所有 Laravel 项目都停止在 localhost 中。

所以,在将 composer.json 从更新到

"php": "^7.3|^8.0",

在运行 composer update 或任何 composer 命令后,我看到 composer 有这样的问题:

PHP Deprecated:  Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Helper/HelperSet.php on line 112

Deprecated: Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Helper/HelperSet.php on line 112
Deprecation Notice: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php:48
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/ArrayRepository.php:277
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/ArrayRepository.php:277
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/ArrayRepository.php:277
Deprecation Notice: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php:48
Deprecation Notice: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php:48
Deprecation Notice: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php:48

我该如何解决这个问题,因为作曲家有错误,我的所有项目都停止了。

【问题讨论】:

为什么会这样? Laravel 7 不支持 PHP 8,并且是在它之前编写的。 你在哪里看到 Laravel 7 兼容 PHP 8.1? 好吧,如果你想使用 PHP 8,你需要使用兼容的 Laravel 版本。 @BrianThompson Laravel 7(和 6)仍受支持。规范 ^7.3|^8.0 表示它适用于 8.1。 你需要更新作曲家;错误消息显然来自composer.phar。就做composer selfupdate 【参考方案1】:

我在最新的 xampp 上遇到了同样的问题,我所做的只是回到 7.4.26,现在 6-7 的安装工作正常。

【讨论】:

这只是一种解决方法。有什么解决办法吗?

以上是关于作曲家和 laravel 7 不适用于 php 8.1 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

作曲家说我的 php 版本是 7.3,但我已经在安装 php 8.0.2 [重复]

PHP Imagick 不适用于 Laravel 8 中的 PDF 文件,简单的 ImagickException

Laravel 8速率限制器不适用于路线

e.preventDefault 不适用于 laravel 5.7

Laravel 作曲家需要 laravel/ui^2.4 也不起作用。 1.0 --dev 也不工作

Vue.js 不适用于新的 Laravel 5.8 项目