如何安全地移除Laravel Debugbar

70

我有一个Laravel应用程序,不是由我开发的。每个页面底部都有一个奇怪的条形,它是一种Laravel调试工具。

enter image description here

我认为它存储在storage/debugger中。有没有安全的方法可以检查一下这是否是它,如果是,我可以删除这种工具而不影响应用程序吗?如果有人知道这个东西是什么,那么如何安全地移除它的任何建议将不胜感激。

10个回答

140

最佳选项:

在你的.env文件中添加DEBUGBAR_ENABLED=false

这样做有以下几个好处:

  • 完全禁用了调试工具栏(debugbar)

  • 您仍然可以保持APP_DEBUG=true,因此仍然可以在本地开发过程中保留错误详细信息

  • 它不会被git跟踪


5
在更改 .env 项后,不要忘记运行 php artisan config:clear - AntG

96

完全禁用调试器

.env文件中

APP_DEBUG=false # No error reporting at all

禁用调试器但仍想接收错误信息(**推荐的方法

.env 文件中实现。

DEBUGBAR_ENABLED=false # deguger is disabled but error reporting works

FYI:如果您更改了.env中的值,但未生效,请使用php artisan config:clearphp artisan optimize:clear来清除配置。


如果您想完全移除Debugbar,可以执行以下操作:

  1. composer remove barryvdh/laravel-debugbar
  2. 然后在config/app.php中删除Barryvdh\Debugbar\ServiceProvider::class,如果存在,并在外观中删除Barryvdh\Debugbar\Facade::class
  3. php artisan cache:clear

有用的链接:

  1. Laravel Docs 9.x:错误和日志记录
  2. Laravel Debugbar

1
我以前从未接受过,我不知道那是一件事情 :)。 - user9006369
12
这将会完全改变您应用程序的调试方式。在开发环境中,您将会得到较少的信息。这明显不是建议的做法。 - Ohgodwhy
1
@Ohgodwhy,我理解你的观点,那是很好的建议,但开发已经完成了!我只是想摆脱那个调试栏。 - user9006369
1
在生产环境中为什么要使用 APP_DEBUG=true?这完全没有意义。你想要在出现错误时打印应用程序的大堆栈跟踪吗?我认为你想要针对 app_log_level 进行调整。 - Ohgodwhy
@Ohgodwhy 您说得对。我想禁用调试栏,而不禁用错误报告。使用 DEBUGBAR_ENABLED=false 的 @AmSoos 的答案对我有用。 - derickito
谢谢,这种方式在 Laravel 10 中仍然有效。 - A.W.

29

运行时启用/禁用。

您可以在运行时启用或禁用调试栏。

将此添加到您的.env文件中:

DEBUGBAR_ENABLED = FALSE
在运行时:
\Debugbar::enable();
\Debugbar::disable();
< p>或者移除所有内容

composer remove barryvdh/laravel-debugbar


如果你发现 Debugbar 类找不到的错误,请确保导入它: use Barryvdh\Debugbar\Facade as Debugbar; - Hasan

28

移除 Laravel Debugbar

- 如果您想完全删除此软件包,请执行以下步骤:

  1. $ composer remove vendor/barryvdh/laravel-debugbar
  2. $ composer update

禁用 Laravel Debugbar


选项 1:通过 Env 文件

- 如果您想禁用此软件包,而不希望其被 Git 跟踪:

  1. 导航到您的 .env 文件
  2. DEBUGBAR_ENABLED = FALSE 添加进去


选项 2:通过 AppServiceProvider

- 参考@Ohgodwhy回答

- 注意:这将受到 Git 的跟踪。 - @Salam

  1. 导航到 app/Providers/AppServiceProvider.php
  2. 加入此代码:\Debugbar::disable();

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        \Debugbar::disable();
    }
}

AppServiceProviderboot() 中禁用将被 Git 跟踪。FYI - Salam
3
这是我想要的 DEBUGBAR_ENABLED 环境变量。 - ManojKiran A
我已经这样做了,现在AppServiceProvider一直给我报错,说找不到'Barryvdh\Debugbar\ServiceProvider'。我已经将其删除了,为什么还在尝试查找它? - PlayHardGoPro

10

您可以执行 composer remove barryvdh/laravel-debugbar 来永久移除它。

请注意,如果您不想要它,您也可以只禁用调试栏:

只需在您的 AppServiceProvider 中输入 \Debugbar::disable(); 即可。


1
这似乎是永久性的删除。我会记住这个建议,以备将来之需。我使用了Abdulla上面的建议,因为它更快一些:),感谢您的建议和贡献。 - user9006369
1
如果您暂时不想使用 debugbar,但又想启用 APP_DEBUG=true,那么第二种方法更好。 - Ryan Monreal
1
如果存在 composer.lock 文件,这样做将不起作用,因为 composer install 会使用它,并且是由较早版本的 composer.json 生成的。你需要运行 composer update,它将使用你修改后的 composer.json 并基于它生成 composer.lock。思路是在开发中运行更新,在部署时仅使用安装。这样,您可以确保与测试中完全相同的版本,直到次要版本。此外,您无需手动从 vendor 中删除任何内容。 - Col South

7

I am using this way:

In config/debugbar.php

'inject'          => false, // this remove Inject Debugbar in Response

以这种方式,我正在保持.php错误启用。
另一种方法是完全禁用。
 'enabled'         => false, 

为了只启用调试工具栏并在会话和Ajax请求中禁用它

'enabled'         => true, 

....

'storage'         => [
        'enabled'    => false, // DebugBar stores data for session/ajax requests.

或者

 'capture_ajax'    => false,

1
很不错,但我的问题是为什么我的配置文件夹中没有debugbar.php文件?这是我需要手动添加还是因为我正在使用laravel 5.5并且在我的沙箱服务器上工作时应该存在? - Bahman.A

4

我从我的composer.json中移除了barryvdh/laravel-debugbar。 当我想执行composer installcomposer update或甚至 php artisan config:cache时,都会出现错误。

[Symfony\Component\Debug\Exception\FatalThrowableError]  
Class 'Barryvdh\Debugbar\ServiceProvider' not found 

事实上,解决方案是删除boostrap/cache/config.php,因为barryvdh/laravel-debugbar被缓存了(php artisan config:cache无法将其删除)。
祝你好运!

1

同时也需要在提供程序中删除:app/config/app.php

之后:

  1. composer remove vendor/barryvdh/laravel-debugbar
  2. composer update

删除以下行:

Barryvdh\Debugbar\ServiceProviderapp/config/app.php 中。

这些文件夹也可以被删除:

  • app/config/packages/barryvdh/laravel-debugbar/config.php
  • 另一个与Debugbar相关的文件,位于app/storage/...下。

0
如果你想移除这个包,按照以下步骤操作: $ composer remove barryvdh/laravel-debugbar $ composer dump-autoload

-9

也可以通过将以下代码添加到您的 .css 文件中来删除它

.phpdebugbar{
    display: none;
}

2
这不是一个好主意。数据仍然会被发送给用户,这意味着每个查看HTML的人都能够看到后端正在发生什么。 - user9206045
1
谢谢,我从没想过那个! - Fer Toasted
2
在所有可能的方法中,你选择了最糟糕的一种。你所做的只是隐藏了这个工具栏,而没有阻止它的加载,因此你既没有享受调试工具栏的优势,却又承受了它缓慢速度的所有劣势。 - Hashim Aziz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接