【问题标题】:How to dynamically enable Laravel Debugbar?如何动态启用 Laravel Debugbar?
【发布时间】:2018-12-25 19:04:18
【问题描述】:

如何在运行时启用 Laravel 调试栏?我想基于会话变量启用它。在我的AppServiceProvider 中添加:

\Debugbar::enable()

但它不起作用。如果我将我的env APP_DEBUG 设置为true 它可以工作,所以调试栏一切正常(我已经成功使用了一段时间),但似乎无法打开/关闭它运行?我在 Laravel 5.4 上。我希望在我的生产环境中默认关闭它,但可以选择以管理员/开发者身份打开它。

我确实看到了这个答案: Dynamically hide Laravel barryvdh debugbar

但是,我希望它默认禁用并在需要时启用,而不是相反。这是因为性能,根据调试栏的文档:

注意。启用后,将添加收集器(并可能产生额外的 开销),因此如果您想在生产中使用调试栏,请禁用 在配置中,仅在需要时启用。

谢谢!

【问题讨论】:

    标签: laravel debugging


    【解决方案1】:

    调试栏需要捕获您的应用程序中发生的所有事情,为了做到这一点,它必须在您的应用程序中几乎所有其他事情发生之前运行。

    如果您能够为管理员打开它,例如,应用程序需要完全启动,接受您的身份验证断言,检查数据库,然后查看您是管理员,然后才知道您想要要运行的调试器。

    您可以做的最好的事情是启动第二个具有不同 ENV 变量的环境。如果你愿意,你甚至可以让它访问同一个生产数据库,但它需要是一个单独的 App 实例。一般来说,无论如何,这是一个更好的工作流程,有一个与生产相同的暂存环境。这里的一个小的安全考虑是,任何在您的生产实例中拥有帐户的用户,如果它在公共网络上,也可以登录。因此,您需要通过 .htaccess 使用密码来保护它,或者可能只为访问服务器设置一个 IP 白名单,这样它就不仅仅是坐在那里了。该调试为不怀好意的人提供了大量有用的信息。

    【讨论】:

    • 是的,我同意你的观点,但是,我并不是真正负责这里的生产服务器,所以本地和生产环境肯定存在差异。该项目还有自己的小型“生态系统”,包含不同的服务、站点等。通常在本地重现错误非常困难,我正在尝试拥有足够的工具来查找和跟踪生产中的错误。感谢您分享您的经验,然后我将采用不同的方法:)
    • 既然 Debugbar 有这个功能,它应该可以工作,但它没有。我也在 Laravel 7 上。请帮助任何人! :)
    • @Gediminas 比我第一次发布这个时更有经验,我现在可以更有权威地说你不能在运行时打开或关闭它,因为到那时 Laravel 可以更改配置,调试栏为时已晚。您可以做的最好的事情是启动第二个具有不同 ENV 变量的环境。如果你愿意,你甚至可以让它访问同一个生产数据库,但它需要是一个单独的 App 实例。总的来说,这是一个很好的工作流程,拥有一个与生产相同的暂存环境。
    • @cfkane 请用 that 信息创建一个答案,您当前的答案是基于意见的,而 cmets 的答案是基于事实的 :)
    • @raveren Fair ...希望这会更清楚一点。
    猜你喜欢
    • 2020-09-28
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2023-03-20
    • 2016-03-11
    相关资源
    最近更新 更多