Laravel 6 - 在生产模式下有条件地启用调试页面

EmJ*_*iEn 0 laravel

我曾经在需要时使用 Laravel 5 在生产中运行 debug true ,方法如下:

'debug' => env('APP_DEBUG', $_SERVER['REMOTE_ADDR'] == 'myipaddress' ? true : false),
Run Code Online (Sandbox Code Playgroud)

然而 Laravel 6 不允许我使用它,当我执行 artisan config:cache 时,artisan 抱怨:

变量 $_server['REMOTE_ADDR'] 未定义且存在。

有人发现还有另一种方法可以用 Laravel 6 来做到这一点吗?

Haf*_*ari 6

您无法缓存动态配置。$_server当 Laravel 尝试缓存你的配置时,没有请求,也没有。

您必须在生产环境中禁用调试 ( APP_DEBUG = false) 并检查日志中是否有任何错误。

但如果您坚持动态启用应用程序调试,则可以使用中间件:

  1. 使用 Artisan 命令创建一个新的中间件:

    php artisan make:middleware EnableDebug
    
    Run Code Online (Sandbox Code Playgroud)
  2. 此命令将在您的目录中放置一个新EnableDebugapp/Http/Middleware。像这样修改它:

    php artisan make:middleware EnableDebug
    
    Run Code Online (Sandbox Code Playgroud)
  3. $middleware在类属性的末尾列出您的中间件类app/Http/Kernel.php

    protected $middleware = [
        //...
        \App\Http\Middleware\EnableDebug::class,
    ];
    
    Run Code Online (Sandbox Code Playgroud)