You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9自定义中间件报错syntax error, unexpected token "return"

Laravel中间件syntax error, unexpected token "return" 修复方案

错误触发原因

语法错误直接来自handle方法中离线模式判断的if语句缺失闭合右括号,PHP解析器读取到未闭合的条件表达式时直接遇到return关键字,因此抛出语法解析错误。
除此之外代码中还存在两处会触发运行时报错的隐患:

  • 维护模式判断分支中调用$this->disabled()时传入的$middleware、$isPOST两个变量未在当前作用域定义,语法错误修复后运行到此处会触发undefined variable报错。
  • 现有代码所有if语句均未书写大括号包裹逻辑块,非常容易出现括号匹配错误、逻辑归属错误,属于高风险编码习惯。

修复步骤

  1. 给离线模式判断的if条件末尾补上缺失的右括号,同时给所有流程控制语句补全大括号
  2. 调整维护模式分支的传参,移除未定义的变量,匹配你自定义disabled方法的实际参数要求即可

修复后参考代码

<?php
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Auth;

class webAPIchecker
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        $route = $request->route()->getName();

        // 离线模式校验逻辑
        $adminsOnlyPass = config('web.offlinePass');

        if ((web('offline_enabled') && !in_array(session('admins_only'), $adminsOnlyPass)) || !web('offline_enabled') && session()->has('admins_only')) {
            session()->forget('admins_only');
        }

        // 已补全缺失的右括号
        if (web('offline_enabled') && !session()->has('admins_only') && !Str::startsWith($route, 'offline.')) {
            return redirect()->route('offline.offline');
        }

        if (!web('maintenance_enabled') && Str::startsWith($route, 'maintenance.')) {
            // 此处请根据你自定义disabled方法的实际参数要求调整传参,原代码传入的$middleware、$isPOST未定义
            // 示例:如果方法只需要场景名参数可直接写为 return $this->disabled('Maintenance');
            abort(404);
        }

        return $next($request);
    }
}

编码建议:所有流程控制语句(if/for/foreach/while等)无论后续执行逻辑是1行还是多行,都强制书写大括号包裹,可有效避免括号漏匹配、逻辑执行范围错误这类低级问题。

内容的提问来源于stack exchange,提问作者CryptoPath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:06:25