继承ArrayAccess:未捕获ErrorException:Collection::offsetExists($key)

问题描述 投票:0回答:6

注意:本地服务器 PHP 版本 8.1.4,composer.json 文件中的 laravel 项目有“php”:“^7.2.5”,版本和“laravel/framework”:“^7.0”

PHP 致命错误:继承 ArrayAccess 期间:未捕获 ErrorException:Illuminate\Support\Collection::offsetExists($key) 的返回类型应与 ArrayAccess::offsetExists(mixed $offset): bool 兼容,或 #[\ ReturnTypeWillChange] 属性应该用来暂时抑制通知

error displaying below like this :

php laravel php-8
6个回答
11
投票

这是一个php版本问题。升级 laravel 或降级 PHP。本文介绍如何降级 PHP 版本以使其与 Laravel 版本匹配。

https://bytexd.com/fix-laravel-return-type-of-Illuminatesupportcollectionoffsetexistskey/


8
投票

在你的composer.json更新行中

"php": "^7.3",

"php": "^7.3|^8.1",

并运行作曲家更新


3
投票

您需要使用 Composer 将 Laravel 框架版本至少升级到版本 8 及其依赖项。

参考:https://laravel.com/docs/8.x/releases

或者如果你想推迟它,你需要在声明每个抛出错误的函数之前添加

#[\ReturnTypeWillChange]
这是非常不可取的。

附注如果您更新了 PHP 版本,则必须将 Composer 中的 PHP 版本更改为所使用的版本,在您的情况下,它应该是

"php": "^8.1.4"


2
投票

就我而言,使用Mac,结果发现我的php版本是8.1,它与laravel版本7不兼容。尽管这些答案中的大多数都是正确的,但它们没有解决我的问题。我按照以下步骤操作(如果安装了brew):

  1. brew 取消链接 [电子邮件受保护]
  2. 酿造链接[电子邮件受保护]或更低

参考如何在 Mac OSX 上轻松切换 PHP 版本?


0
投票

出现此问题是因为 PHP 8.1 不支持 laravel 7, 所以意味着虽然你需要将你的 php 版本降级到 <=8.0. This worked for me.

希望这也能帮助你。


-3
投票

在您的项目目录中运行“composer update”,它将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.