আমার প্রোফাইলার সরঞ্জামদণ্ডটি সিমফনি ৪.৩.১ এ প্রদর্শিত হচ্ছে না


9

আমার .envফাইলে, আমি আমার অ্যাপ্লিকেশন পরিবেশটি নির্দিষ্ট করে দেব এবং ডিবাগ হতে নির্দিষ্ট করেছি:

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সবকিছু ঠিকঠাক হয় তবে প্রোফাইলার উপস্থিত হয় না। আমি কি এমন কিছু মিস করেছি যা সিমফনির মধ্যে সেই বৈশিষ্ট্যটি সক্ষম করে?

স্পষ্ট করার জন্য, পৃষ্ঠাটি উপযুক্ত সামগ্রী সহ একটি সঠিক 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>

সিকিউরিটি.আইএমএল ফায়ারওয়াল:

    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',
        ]);
    }
}

?>

যোগ করা সর্বজনীন / সূচক.এফপি:

<?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
১. আপনি কি আপনার ব্রাউজারের নেটওয়ার্ক ট্যাবে (এফ 12 এবং এফ 12 ক্রোম) চেক করতে পারেন, যে কোনও কিছু প্রোফেলার রুট লোড হয়েছে? (যদি হ্যাঁ, এটি বোঝা তবে অদৃশ্য)। 2. ওয়েব প্রোফাইলার বান্ডিলটি সক্রিয়, bin/console debug:event-dispatcher kernel.responseযেখানে -128 অগ্রাধিকার সহ সেখানে চালিত হওয়া উচিত WebDebugToolbarListener::onKernelResponse। যদি তা না হয় তবে কনফিগার / bundles.php পরীক্ষা করুন, যাতে ওয়েবপ্রফিলারবান্ডেল থাকতে হবে। হাঁ।
জাকুমি

2
@ মাজো0od আপনি যদি দেখতে পান যে ১০২ লাইনের শর্তের কারণে শ্রোতারা কাজ বন্ধ করে দেয়, আপনি কী আরও চেষ্টা করার চেষ্টা করেছেন? এর মধ্যে কোন শর্তটি মূল্যায়ন করে true?
নিকো হাজেস

1
অস্থায়ীভাবে সংশোধন করুন WebDebugToolbarListener.php। রিটার্ন স্টেটমেন্টের আগে 109 লাইনে এটি যুক্ত করুন: echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();এবং এর জন্য রিটার্নটি রিপোর্ট করুন।
yivi

1
আপনি কোনও ত্রুটি পান কিনা তা দেখতে "কনফিগারেশন / প্যাকেজগুলি / ডিভ / ওয়েব_প্রোফাইল.আইএমএল" এর শীর্ষে কিছু বোগাস স্ট্রিং (যেমন "অ্যাবসি") যুক্ত করুন। হয়ত ফাইলটি মোটেই পঠিত হয়নি।
জেনেস বোটিস

উত্তর:


7

এটি আপনার পক্ষে দূর থেকে ডিবাগ করা খুব কঠিন, যদি অসম্ভব না হয়। সঠিক সমস্যাটি আপনার স্থানীয় সেটআপে নির্দিষ্ট কোনও কিছুর সাথে জড়িত এবং আপনার প্রকল্পে অ্যাক্সেসবিহীন কাউকে ঠিক কী ভুল তা দেখার সুযোগ হবে না।

আপনার পরিস্থিতির জন্য কিছু সাধারণ এবং নির্দিষ্ট সমস্যা সমাধানের পরামর্শ:

1st। প্রোফাইলার প্যাকটি পুনরায় ইনস্টল করুন

অস্বাভাবিক হলেও, ইনস্টলেশনটি উদ্বিগ্ন হতে পারে। আপনার প্রোফাইল প্যাকেজ ঠিক আছে কিনা তা নিশ্চিত করুন।

প্রথমে এটি সরান ( composer remove profiler), এবং তারপরে এটি আবার ইনস্টল করুন composer require --dev profiler:)।

2nd। কনফিগারেশন পরীক্ষা করুন

আপনার কনফিগারেশনটি যাচাই করতে সিমফোনির কনসোল কমান্ডটি ব্যবহার করুন।

অন্তর্নির্মিত প্রোফাইলারের জন্য প্রথম:

$ 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 য়। ধারকটি পরীক্ষা করুন

প্রোফাইলার পরিষেবাটি কীভাবে ইনস্ট্যান্ট করা হবে তা পরীক্ষা করুন:

$ 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
 ---------------- -------------------------------------------------------------------------------------

এবং তারপরে ওয়েব_টুলবারের জন্য:

# 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
 ------- -------------------------------------------------------------------------------------------- ----------

বিজ্ঞপ্তি আইটেম #7, যা প্রোফাইলার সংগ্রাহক (যা অন্যান্য জিনিসের X-Debug-Tokenমধ্যে প্রতিক্রিয়ায় শিরোনামকে অন্তর্ভুক্ত করবে , যা পরবর্তী সময়ে ওয়েব ডিবাগ সরঞ্জামদণ্ড দ্বারা পরীক্ষা করা হবে, যা #8উপরের তালিকার আইটেম is

উপরের চেকগুলির কোনওটি যদি ব্যর্থ হয়

কেন এটি ব্যর্থ হচ্ছে তা জানতে আপনাকে সেই নির্দিষ্ট অংশটিতে ফোকাস করতে হবে। অন্য কিছু বান্ডেল হস্তক্ষেপ হতে পারে? কোনও একটি কনফিগারেশন ফাইল নিয়ে সমস্যা?

সবকিছু চেক আউট

... কিন্তু তবুও কাজ হচ্ছে না? আচ্ছা, এটা অদ্ভুত। আপনার ফিরে আসা টেম্পলেটটিতে একটি </body>ট্যাগ রয়েছে এবং ফিরে আসা প্রতিক্রিয়ায় text/htmlকন্টেন্ট-টাইপ রয়েছে তা নিশ্চিত করুন। তবে উপরের সমস্ত যদি চেক আউট করে ... এটি কাজ করা উচিত


একটি মন্তব্যে আপনি বলেছেন যে framework.profiler.collectএই চেকগুলি সম্পাদন করার সময় এটি মিথ্যাতে সেট করা আছে।

এটির config/packages/dev/web_profiler.yamlমতো পরিবর্তন করে সত্যে সেট করুন :

framework:
    profiler:
        only_exceptions: false
        collect: true

3
যে জিনিসটি দাঁড়িয়ে ছিল তা ছিল: debug:config framework profilerফিরে এসেছিলcollect: false
Majo0od

সুতরাং framework.profiler.collectএটির কনফিগারেশন যুক্ত করার চেষ্টা করুন true
yivi

1
এটা জীবিত!!! অবশেষে! এখন ফিরে এসেছে! ডিবাগিং এবং সহায়তার জন্য আপনাকে ধন্যবাদ !!!!
Majo0od

কে জানত যে একটি লাইন সবই গোলযোগ করতে পারে। collect : trueIতিহাসিকভাবে আমাদের সঠিকভাবে মনে পড়লে যোগ করার দরকার পড়েনি? এটা কি নতুন?
Majo0od

এই সমস্ত পদক্ষেপের জন্য ধন্যবাদ! দেখা গেল আমি এমন একটি টেমপ্লেট তৈরি করেছি যা বেসকে প্রসারিত করে না তাই প্রকৃতপক্ষে এইচটিএমএল / জাভাস্ক্রিপ্ট ফিরে আসেনি তবে কেবল প্লেইন টেক্সট।
আলেকজান্ডার ভারভিজক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.