错误 "Trying to access array offset on value of type null" 在 Laravel 5.8.26 和 PHP 7.4.2 中。

18

我在管理面板中使用以下函数来插入/创建新用户:

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email|unique:users,email',
        'password' => 'required|same:confirm-password'
    ]);


    $input = $request->all();
    $input['password'] = Hash::make($input['password']);


    User::create($input);

    return redirect()->route('admin.pages.users.index')
        ->with('success','User created successfully');
}

我提交时收到以下错误信息:

尝试访问类型为null的值的数组偏移量

编辑: 我找到了问题。我的问题在于电子邮件验证规则。当我删除电子邮件验证规则后,插入数据就变为true。

输入图像描述

我该如何解决这个错误!


1
这个回答解决了你的问题吗?尝试访问空类型值的数组偏移量 - Nico Haase
尝试使用以下代码:'email' => 'required|email|unique:users' - V-K
@V-K: Php 7.4.2 和 Laravel 5.8.26 - LarakBell
@V-K:哦!!!好的,我试试看。 - LarakBell
@LaraBell,你现在的问题解决了吗?我也有同样的问题。降级到PHP 7.3还是没有成功。 - claudios
显示剩余4条评论
6个回答

29
修改您的Composer.json中的Php版本为7.4.1并运行。
composer update

这对我来说可行


1
如果您的网站已经上线,但无法更新composer,则可以在Web主机cpanel中在PHP 7.3和7.4之间切换PHP版本。您的回答刚刚为我节省了数小时的工作时间..谢谢。 - icynets
1
将isset函数放置在vendor/illuminate/support/ServiceProvider.php文件的第84行上 isset($this->app->config['view']) && isset($this->app->config['view']['paths']) - Hayk Abrahamyan

9

当我使用Laravel 5.8.*和PHP 7.4版本时,遇到了同样的问题。我解决了这个问题,只需要在终端中更新composer即可,运行以下命令:

composer update

或者

php composer.phar update

并且轻松解决了我的问题。


即使该命令非常危险,但它也解决了我的问题。我在使用 Laravel 5.8 和 PHP 7.4 进行单元测试时遇到了问题。 - Mycodingproject
@Mycodingproject,很高兴能够解决您的问题。 - A.A Noman
这对我有用。我更新了一个模块,出现了这个问题,但是在运行composer update之后,问题得到了解决。谢谢! - Billa

7
在此文件 vendor\egulias\email-validator\EmailValidator\Parser\Parser.php 的第 147 行,
将其从 if ($previous['type'] === EmailLexer::S_BACKSLASH 更改为 if (isset($previous['type']) && $previous['type'] === EmailLexer::S_BACKSLASH ...

8
不要直接修改供应商提供的软件包,因为后续通过composer update进行的更新可能会覆盖您所做的任何更改。 - Danzapps
@Danzapps 有时候在没有所有访问权限的开发服务器上进行某些操作时,您可能想临时修补供应商软件包,以便您不会通过 composer update 破坏生产环境。 - user151496

4

我在生产应用中遇到了同样的问题,将PHP版本更改为7.3解决了该问题。


1
我遇到了同样的问题,经过调试,我发现我的SMTP凭据无法正常工作,而电子邮件发送模块也无法正常工作,因此我会收到此错误。在修复凭据后,我的代码开始正常工作,异常消失了。
我建议您检查您的SMTP凭据,并确保打开较不安全的应用程序设置。

打开我的不安全应用程序设置对我有用,似乎是因为我的电子邮件提供商关闭了它,因为有多次登录尝试失败。 - kapitan

1
请尝试这个,希望能对您有所帮助。
public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email|unique:users,email',
        'password' => 'required|same:confirm-password'
    ]);


    $insert_array = [
                'name' => $request->name,
                'email' => $request->email,
                'password' => Hash::make($request->password)
            ];

    User::create($insert_array );

    return redirect()->route('admin.pages.users.index')
        ->with('success','User created successfully');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接