Laravel 6 - условно включить страницу отладки в рабочем режиме - PullRequest
0 голосов
/ 25 января 2020

Я использовал для запуска debug true в рабочей среде, когда это было необходимо, с помощью Laravel 5 следующим образом:

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

Однако Laravel 6 не позволяет мне использовать его, когда я выполняю настройку artisan: Кэш, ремесленник жалуется, что:

переменная $ _server ['REMOTE_ADDR'] не определена и существует.

Есть ли другой способ, с помощью которого кто-то обнаружил, что работает сделать это с Laravel 6?

1 Ответ

1 голос
/ 25 января 2020

Нельзя кешировать динамические c конфиги. нет запроса и $_server, когда Laravel пытается кэшировать ваши конфиги.

Вы должны отключить отладку на производстве (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,
    ];
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...