簡體   English   中英

laravel 中間件 array_key_exists() 錯誤

[英]laravel middleware array_key_exists() error

我的中間件代碼
php 版本 5.6.32-1

<?php

namespace App\Http\Middleware;
use Session, Closure;

class AuthLogin
{
    public function handle($request, Closure $next)
    {
        if (!Session::has('account')) {
          return redirect('/admin/login');
        }

        return $next($request);
    }
}

我得到這個錯誤

array_key_exists():第一個參數應該是字符串或整數

它怎么了?

我的 mac 上沒有任何錯誤,但它發生在我的 linode 服務器上

由於以下原因,您收到此錯誤:

$arr = [[0] => 10,[1] => 20,[2] => 30,[3] => 40,[4] => 50];

假設您搜索值10或30

$ k = array_search('10',$ arr);

現在$ k會保留[0]

如果這樣做

array_key_exists($ k,$ arr);

您將得到array_key_exists():第一個參數應該是字符串或整數,因為$ ki,e 0被視為布爾值而不是字符串或整數,但是如果我們搜索了30,則不會發生此問題。

對於遇到此問題的任何人,我通過使用以下方法清除配置緩存來解決此問題:

 php artisan config:clear

或者您也可以使用命令(這將清除應用程序中的所有緩存,包括路由、配置、視圖和應用程序緩存):

php artisan optimize:clear

這就是我檢查會話是否存在的方式:

 public function handle($request, Closure $next)
    {
        if (!$request->session()->exists('session_name')) {
            return redirect('/');
        }

        return $next($request);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM