Laravel 6在生产模式下调试

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

我曾经在Laravel 5中通过以下方式在生产中运行true调试:

'debug' => env('APP_DEBUG', $_SERVER['REMOTE_ADDR'] == 'myipaddress' ? true : false),

但是Laravel 6不允许我使用它,当我使用artisan config:cache时,artisan抱怨变量$ _server ['REMOTE_ADDR']没有定义并且存在。

还有其他人发现正在使用Laravel 6进行此操作的方法吗?

laravel
1个回答
0
投票

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

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

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

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

    php artisan make:middleware EnableDebug
    
  2. 此命令将在您的EnableDebug目录中放置一个新的app/Http/Middleware类。像这样修改它:

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    
    class EnableDebug
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            config(['app.debug' => $request->ip() === 'myipaddress']);
    
            return $next($request);
        }
    }
    
  3. $middleware类的app/Http/Kernel.php属性的末尾列出您的中间件类:

    protected $middleware = [
        //...
        \App\Http\Middleware\EnableDebug::class,
    ];
    
© www.soinside.com 2019 - 2024. All rights reserved.