Laravel 调试器 - enable/disable 取决于实现缓存时的 IP 地址

Laravel debugger - enable/disable depending on IP address while caching implemented

我们需要 eneble/disable Laravel debugbar 取决于 IP 地址。如果我们 clear/disable 缓存就可以了。

但启用缓存后它不起作用。这是我的代码

//Enabling DEBUGBAR in Production Only for developers
if(in_array($request->ip(), [ip addresses])) {
    config(['app.debug' => true]);
}

.env

APP_DEBUG=false

我们正在使用配置和路由缓存。实现此目标的最佳方法是什么?

Laravel version - 5.4

Debugbar version - 2.2

调试器具有 enable/disable 它在运行时的功能:

\Debugbar::enable();
\Debugbar::disable();

If you want to use the debugbar in production, disable in the config and only enable when needed.

所以你可以这样做:

if(in_array($request->ip(), [ip addresses])) {
    \Debugbar::enable();
    // Forcing the cache to be cleared
    // Not recommended but if and only if required
    \Artisan::call('cache:clear');
}

请检查 documentation 以获得更多帮助。

您正在使用 Debugbar 库,因此该库将在您的路由或控制器加载之前加载,因此您最好在库加载之前 bootstrap 您的东西。然后我们可以bootstrap我们自定义的配置在AppServiceProviderclass.

服务提供商是所有 Laravel 应用程序 bootstrapping 的中心。

简单方法
根据以下代码更改文件 app\Providers\AppServiceProvider.php class。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Request;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        // You can also clear cache if needed Artisan::call('cache:clear');
        if(in_array(Request::ip(), ['127.0.0.1'])) {
            config(['app.debug' => true]);
        }
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}