8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

我的分析器工具栏未显示在 symfony 4.3.1 中

ProfoundHypnotic 1月前

116 0

在我的 .env 文件中,我已将我的应用环境指定为 dev,并将 debug 指定为 true,如下所示:APP_ENV=devAPP_DEBUG=true 在我的 config/packages/dev/web_profiler.yaml 文件中,我有以下内容:

在我的 .env 文件中,我已指定我的应用环境为 dev,并将 debug 指定为 true,如下所示:

APP_ENV=dev
APP_DEBUG=true

在我的 config/packages/dev/web_profiler.yaml 文件中,有以下内容:

web_profiler:
    toolbar: true
    intercept_redirects: false

framework:
    profiler: { only_exceptions: false }

内部的路由 config/routes/dev/web_profiler.yaml 似乎很好:

web_profiler_wdt:
    resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
    prefix: /_wdt

web_profiler_profiler:
    resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
    prefix: /_profiler

因此,当我运行服务器时, symfony server:start 一切正常,但分析器没有出现。我是否错过了 Symfony 中启用该功能的某些东西?

需要澄清的是,该页面输出的是具有适当内容的正确 HTML 页面。只是没有显示分析器。


我的基本树枝模板:

<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title>{% block title %} {% endblock %}</title>
        {{ encore_entry_script_tags('base') }}
        <link rel="icon" type="image/x-icon" href="{{ asset('build/images/favicon.ico') }}" />
        <link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,500|Playfair+Display:400,700&display=swap" rel="stylesheet">
        {{ encore_entry_link_tags("base") }}
        {% block stylesheet %}{% endblock %}
    </head>
    <body {% if app.request.get('_route') == 'home' %} class='homepage' {% endif %} >
        <header>
            <div id='top-navigation' class='padding-lg__left-md padding-lg__right-md padding-lg__top-sm padding-lg__bottom-sm row row__align-center row__justify-start'>
                <span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Our Mission</span>
                <span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Our Team</span>
                <span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Where the Money Goes</span>
                <span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Community Leadership</span>
                <span class='text-color__white text-size__small text-weight__bold'>Policies</span>
                <span class='text-color__white text-size__small text-weight__bold margin-lg__left-auto icon-set'> <span class='icon size__small color__white margin-lg__right-xsm'>{{ source('@public_path'~asset('build/images/icons/feedback.svg')) }}</span>Submit Feedback</span>
            </div>
            <nav class="padding-lg__top-md padding-lg__bottom-md padding-lg__left-md padding-lg__right-md row row__align-center row__justify-start {% if app.request.get('_route') == 'home' %} homepage {% endif %}">
                <div id='logo'>
                    <a href="{{ url('home') }}">
                        <img src="{{ asset('build/images/logo_placeholder.png') }}" alt="logo">
                    </a>
                </div>
                {% if app.request.get('_route') == 'creator-register' %}

                {% else %}
                    {% if not is_granted('IS_AUTHENTICATED_FULLY') %}
                        <div class='margin-lg__left-auto'>
                            <a href="{{ url('login') }}">
                                <div class='icon-set'>
                                    <span class='icon margin-lg__right-xsm'>
                                        {{ source('@public_path'~asset('build/images/icons/user.svg')) }}
                                    </span>
                                    <span class='nav-item'>Login</span>
                                </div>
                            </a>
                        </div>
                    {% endif %}

                {% endif %}
            </nav>
        </header>
        {% if app.request.get('_route') != 'home' %} <div class='container is_top'> {% endif %}
            {% block body %} {% endblock %}
        {% if app.request.get('_route') != 'home' %} </div> {% endif %}
    </body>
</html>

Security.yaml 防火墙:

    firewalls:
            dev:
                pattern: ^/(_(profiler|wdt)|css|images|js)/
                security: false
            main:
                anonymous: true
                guard:
                    authenticators:
                        - App\Security\LoginFormAuthenticator
                logout:
                    path : logout
                remember_me:
                    secret: '%kernel.secret%'
                    lifetime: 2592000 #<- 30 days in seconds - defaults to one year if you take this out!

结果 php bin/console debug:router | grep _profiler :

  _profiler_home             ANY      ANY      ANY    /_profiler/                        
  _profiler_search           ANY      ANY      ANY    /_profiler/search                  
  _profiler_search_bar       ANY      ANY      ANY    /_profiler/search_bar              
  _profiler_phpinfo          ANY      ANY      ANY    /_profiler/phpinfo                 
  _profiler_search_results   ANY      ANY      ANY    /_profiler/{token}/search/results  
  _profiler_open_file        ANY      ANY      ANY    /_profiler/open                    
  _profiler                  ANY      ANY      ANY    /_profiler/{token}                 
  _profiler_router           ANY      ANY      ANY    /_profiler/{token}/router          
  _profiler_exception        ANY      ANY      ANY    /_profiler/{token}/exception       
  _profiler_exception_css    ANY      ANY      ANY    /_profiler/{token}/exception.css 

最后是主页控制器:

<?php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class HomepageController extends AbstractController{

    /**
    * @Route("/", name="home")
    */

    public function output(){
        return $this->render('homepage/home.html.twig',[
            'title' => 'yo',
        ]);
    }
}

?>

添加 public/index.php:

<?php

use App\Kernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;

require dirname(__DIR__).'/config/bootstrap.php';

if ($_SERVER['APP_DEBUG']) {
    umask(0000);

    Debug::enable();
}

if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
    Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
}

if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
    Request::setTrustedHosts([$trustedHosts]);
}

$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
帖子版权声明 1、本帖标题:我的分析器工具栏未显示在 symfony 4.3.1 中
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由ProfoundHypnotic在本站《symfony》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 尝试使用命令:

    composer dump-env dev
    
  • 如果您使用 Apache 而不是 Symfony 服务器,首先必须安装 Apache 包:

    composer require symfony/apache-pack
    

    其次,确保 Apache mod_rewrite 已启用。在 Debian 或类似 Debian 的操作系统中,您可以按如下方式执行此操作:

    sudo a2enmod rewrite
    

    最后,允许在 Apache 中编辑 apache2.conf 进行覆盖,例如:

    <Directory /var/www/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>
    

    注意“AllowOverride All”而不是“AllowOverride None”

  • 如果您不断收到“正在加载...”消息(或类似消息),请检查身份验证是否正常。

    从旧的 警卫系统迁移到新的安全系统时, 我破坏了身份验证机制(以及匿名用户的处理),这导致调试工具栏无法加载。

  • @LoïcPennamen 不确定我是否理解。我只是确保通过 https 访问本地网站,它对我来说是有效的。

  • 当通过 HTTP 而不是 HTTPS 访问本地站点时也会发生这种情况,这会导致工具栏请求失败。

    通过查看浏览器开发工具的请求选项卡进行检查。如果请求被阻止,您可能错过了 代理配置 (来自 此问题 ):

    framework:
        trusted_proxies: '127.0.0.1,REMOTE_ADDR'
    
  • 谢谢 - 我也遇到了同样的问题。想知道为什么工具栏没有显示。而且我也没有定义主体,只定义了头部。因此工具栏没有显示。

  • 我在新的 Symfony 5.1 应用程序中遇到了类似的症状 - 即使项目处于调试模式,某些页面上也不会显示调试工具栏。结果发现,在这个应用程序中,我原本打算将标签 <body></body> 放在每个页面的 Twig 模板中,而不是放在基本模板中。但对于一些页面(那些没有显示调试工具栏的页面),我忘记 <body></body> 在页面模板中包含标签,因此呈现的 HTML 没有 <body> 标签 - 因此不会显示调试工具栏。

  • 一个多小时以来,我一直在尝试弄清楚为什么在我的本地环境中只有根 (/) 路由有效。这个 composer require 帮我解决了这个问题。现在所有路由(包括 /_profiler/* 路由)都正常工作了。谢谢!

  • 我也遇到过这个问题。我是 Sympfony 的新手,我不知道如果在 apache 上运行,必须通过 composer 来请求 .htaccess。只需执行以下操作:

    composer require symfony/apache-pack
    

    就是解决方案。

  • 感谢所有这些步骤!原来我创建的模板没有扩展基础,因此实际上没有返回 HTML/Javascript,而只返回纯文本。

  • 引用 12

    谁知道一行代码就能搞乱一切。如果我没记错的话,以前我们不需要添加 collect : true 吗?这是新的吗?

  • 引用 13

    因此尝试添加 framework.profiler.collect 的配置以使其显示为真。

  • 突出的是:debug:config framework profiler 返回 collect:false

  • s c 1月前 0 只看Ta
    引用 15

    远程为您调试这个问题非常困难,甚至不可能。确切的问题与您本地设置中的某些特定内容有关,无法访问您项目的人将无法准确看到问题所在。

    针对您的情况的一些常规和具体的故障排除建议:

    1. 重新安装分析器包

    虽然不常见,但安装可能会失败。请确保您的分析器包没有问题。

    首先将其删除( composer remove profiler ),然后重新安装: composer require --dev profiler )。

    2. 检查配置

    使用 Symfony 的控制台命令来验证您的配置。

    首先是内置分析器:

    $ bin/console debug:config framework profiler
    

    返回的内容如下:

    Current configuration for "framework.profiler"
    ==============================================
    
    only_exceptions: false
    enabled: true
    collect: true
    only_master_requests: false
    dsn: 'file:%kernel.cache_dir%/profiler'
    

    然后对于分析器工具栏:

    $ bin/console debug:config web_profiler
    

    返回的内容类似如下:

    Current configuration for extension with alias "web_profiler"
    =============================================================
    
    web_profiler:
        toolbar: true
        intercept_redirects: false
        excluded_ajax_paths: '^/((index|app(_[\w]+)?)\.php/)?_wdt'
    

    3. 检查容器

    检查 Profiler 服务将如何实例化:

    $ bin/console debug:container profiler --show-arguments
    

    期望这样的事情发生:

    Information for Service "profiler"
    ==================================
    
     Profiler.
    
     ---------------- -------------------------------------------------------------------------------------
      Option           Value
     ---------------- -------------------------------------------------------------------------------------
      Service ID       profiler
      Class            Symfony\Component\HttpKernel\Profiler\Profiler
      Tags             monolog.logger (channel: profiler)
                       kernel.reset (method: reset)
      Calls            add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add
      Public           yes
      Synthetic        no
      Lazy             no
      Shared           yes
      Abstract         no
      Autowired        no
      Autoconfigured   no
      Arguments        Service(profiler.storage)
                       Service(monolog.logger.profiler)
                       1
     ---------------- -------------------------------------------------------------------------------------
    

    然后对于web_toolbar:

    # bin/console debug:container web_profiler.debug_toolbar --show-arguments
    

    对于这样的事情:

    Information for Service "web_profiler.debug_toolbar"
    ====================================================
    
     WebDebugToolbarListener injects the Web Debug Toolbar.
    
     ---------------- ------------------------------------------------------------------------
      Option           Value
     ---------------- ------------------------------------------------------------------------
      Service ID       web_profiler.debug_toolbar
      Class            Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener
      Tags             kernel.event_subscriber
                       container.hot_path
      Public           no
      Synthetic        no
      Lazy             no
      Shared           yes
      Abstract         no
      Autowired        no
      Autoconfigured   no
      Arguments        Service(twig)
    
                       2
                       Service(router.default)
                       ^/((index|app(_[\w]+)?)\.php/)?_wdt
                       Service(web_profiler.csp.handler)
     ---------------- ------------------------------------------------------------------------
    

    (请注意 2 ,它可以启用工具栏)。

    4. 检查事件调度程序。

    网页调试工具栏在事件期间注入 kernel.response 。检查回调是否正确挂钩:

    $ bin/console debug:event-dispatcher kernel.response
    

    它将返回如下内容:

    Registered Listeners for "kernel.response" Event
    ================================================
    
     ------- -------------------------------------------------------------------------------------------- ----------
      Order   Callable                                                                                     Priority
     ------- -------------------------------------------------------------------------------------------- ----------
      #1      ApiPlatform\Core\Hydra\EventListener\AddLinkHeaderListener::onKernelResponse()               0
      #2      Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse()              0
      #3      Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse()          0
      #4      Symfony\Component\WebLink\EventListener\AddLinkHeaderListener::onKernelResponse()            0
      #5      Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse()              0
      #6      ApiPlatform\Core\HttpCache\EventListener\AddHeadersListener::onKernelResponse()              -1
      #7      Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse()              -100
      #8      Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse()   -128
      #9      Symfony\Component\HttpKernel\EventListener\TestSessionListener::onKernelResponse()           -128
      #10     Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener::onResponse()      -255
      #11     Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse()               -1000
      #12     Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse()      -1024
     ------- -------------------------------------------------------------------------------------------- ----------
    

    注意 item #7 ,它是 Profiler 收集器(除其他内容外,它将包括 X-Debug-Token 响应中的标题,稍后将由 Web 调试工具栏检查,它是 #8 上面列表中的项目。

    如果上述任何一项检查失败

    您必须专注于特定部分才能找出 原因 。也许是其他一些软件包干扰了?某个配置文件有问题?

    一切顺利

    ... 但仍然不起作用?嗯,这很奇怪。确保返回的模板有一个 </body> 标签,并且返回的响应具有 text/html 内容类型。但如果以上所有检查都通过... 它 应该可以 工作。


    在评论中您说 framework.profiler.collect 在执行这些检查时将其设置为 false。

    如下 config/packages/dev/web_profiler.yaml 更改将其设置为 true

    framework:
        profiler:
            only_exceptions: false
            collect: true
    
  • 在 \'config/packages/dev/web_profiler.yaml\' 的顶部添加一些虚假字符串(例如 \'abc\'),看看是否会出现错误。也许文件根本没有被读取。

  • @Majo0od 如果你发现第 102 行中的条件导致侦听器停止工作,你尝试了什么来进一步解决该问题?以下哪个条件的计算结果为

  • 1. 您可以在浏览器的网络选项卡(ff 和 chrome 中按 F12)中检查,是否可能已加载某些 _profiler 路由?(如果是,则已加载但不可见)。2. Web Profiler 包是否处于活动状态,请运行

  • 在浏览器中按 ctrl-u 并验证是否显示 html 页面。该栏仅在实际页面上显示。

返回
作者最近主题: